#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "global.h"
#include "errorlib.h"
#include "nodes\allnodes.h"
extern translation_unit* translationUnit;
extern char tokval[BUFSIZE];
typedef union  {
  int   i;
  float r;
  char *s;
  Node* node;
  List* list;
} YYSTYPE;
#define DDD 257
#define CHARACTER_CONSTANT 258
#define FLOAT_CONSTANT 259
#define INTEGER_CONSTANT 260
#define STRING 261
#define IDENTIFIER 262
#define TYPENAME 263
#define ENUMERATION_CONSTANT 264
#define Auto 265
#define Break 266
#define Case 267
#define Char 268
#define Const 269
#define Continue 270
#define Default 271
#define Do 272
#define Double 273
#define Else 274
#define Enum 275
#define Extern 276
#define Float 277
#define For 278
#define Goto 279
#define If 280
#define Int 281
#define Long 282
#define Register 283
#define Return 284
#define Short 285
#define Signed 286
#define Sizeof 287
#define Static 288
#define Struct 289
#define Switch 290
#define Typedef 291
#define Void 292
#define Volatile 293
#define Union 294
#define Unsigned 295
#define While 296
#define OROR 297
#define ANDAND 298
#define EQU 299
#define NEQ 300
#define LEQ 301
#define GEQ 302
#define SHL 303
#define SHR 304
#define ADDADD 305
#define SUBSUB 306
#define PTR 307
#define ADDEQ 308
#define SUBEQ 309
#define MULEQ 310
#define DIVEQ 311
#define MODEQ 312
#define SHLEQ 313
#define SHREQ 314
#define ANDEQ 315
#define XOREQ 316
#define IOREQ 317
#define comma 318
#define BANDEQ 319
#define BXOREQ 320
#define BOREQ 321
#define BOR 322
#define BEOR 323
#define BAND 324
#define ADD 325
#define SUB 326
#define MUL 327
#define DIV 328
#define MOD 329
#define UNIADD 330
#define UNISUB 331
#define UNIMUL 332
#define UNIBAND 333
YYSTYPE yylval, yyval;
#define YYERRCODE 256


extern void yyerror( char *, char * );
FILE *yytfilep;
char *yytfilen;
int yytflag = 0;
int svdprd[2];
char svdnams[2][2];

const int yyexca[] = {
  -1, 1,
  0, -1,
  -2, 0,
  -1, 15,
  61, 69,
  123, 69,
  -2, 38,
  -1, 112,
  256, 38,
  262, 38,
  263, 38,
  265, 38,
  268, 38,
  269, 38,
  273, 38,
  275, 38,
  276, 38,
  277, 38,
  281, 38,
  282, 38,
  283, 38,
  285, 38,
  286, 38,
  288, 38,
  289, 38,
  291, 38,
  292, 38,
  293, 38,
  294, 38,
  295, 38,
  42, 38,
  40, 38,
  59, 38,
  -2, 220,
  -1, 202,
  125, 64,
  44, 64,
  -2, 38,
  -1, 268,
  262, 38,
  263, 38,
  265, 38,
  268, 38,
  269, 38,
  273, 38,
  275, 38,
  276, 38,
  277, 38,
  281, 38,
  282, 38,
  283, 38,
  285, 38,
  286, 38,
  288, 38,
  289, 38,
  291, 38,
  292, 38,
  293, 38,
  294, 38,
  295, 38,
  42, 38,
  40, 38,
  91, 38,
  41, 38,
  -2, 220,
  0,
};

#define YYNPROD 299
#define YYLAST 1995

const int yyact[] = {
     181,      15,      15,     177,     103,     204,      14,      15,
      76,     379,      78,     199,     102,     307,     309,       9,
      73,      78,      10,     219,     287,     288,     316,     173,
     128,      79,     189,     262,      77,     281,      83,     282,
     138,     275,     276,       7,     214,     131,     245,     435,
      90,     167,      62,      75,     168,     232,     161,      37,
      36,      35,     386,     265,      85,      86,      37,      35,
      36,     172,      37,     146,     176,     198,      37,      76,
      35,     215,     104,      96,     157,      87,      76,      37,
     171,      96,     112,      15,     264,     253,     143,     195,
      68,     186,      68,     380,      95,     142,     169,       8,
     202,      76,     182,      75,      79,      96,      66,     101,
      78,      67,     191,     270,      91,     112,     212,     194,
     179,      81,     211,     206,     119,      68,     175,      13,
     178,     209,     210,     205,      37,      96,      69,     215,
     188,     212,      81,     226,     188,     224,      84,      96,
     291,     297,     292,     175,      68,      96,      35,     188,
     272,     378,      96,     296,      96,      37,     179,       2,
      75,      61,     178,     215,      -1,      -1,     159,     217,
     158,     250,     104,     249,     247,     343,     147,     145,
     115,     268,      66,     144,     184,     116,     141,      81,
     258,     193,     295,     294,      65,     290,     216,     289,
     286,     285,     280,     293,     298,      88,      36,     279,
     278,     277,     274,     273,     271,     170,     269,      15,
     100,     207,     192,     202,     208,      76,     263,     261,
     244,      15,     243,     301,     140,     302,     306,     231,
     311,     212,     125,     124,     322,     211,     123,     212,
     122,     314,     212,     325,     252,     324,     327,     206,
     121,     120,     303,     251,     118,      93,      94,     205,
     434,     117,     114,     113,     317,     318,     110,     109,
      65,     108,     106,     320,     328,     329,     105,     321,
     372,     185,     346,     347,      82,     326,     183,     315,
     339,     197,     312,     196,      57,     268,      56,      55,
      52,      34,     299,     300,      76,      36,     283,     284,
     246,     345,     310,      33,      36,     213,      66,     220,
      36,     218,      53,     354,      36,      32,     229,      30,
      66,     227,     228,     230,     236,     237,     233,     234,
     235,     238,     239,     240,     242,     241,     371,      76,
     341,     220,      54,      78,      29,      15,     350,     356,
     348,     382,      28,     385,     357,     368,     369,     370,
     375,     266,     376,     383,     306,      77,     384,     212,
     304,     373,     349,     394,     344,     333,     392,     388,
     148,     149,     254,     220,      93,     393,     178,     139,
      85,     220,     404,     366,     367,     351,     352,     178,
      27,     178,     389,      66,      76,      26,     364,     365,
     358,     359,      25,     406,      24,      23,      22,     319,
     375,      21,     381,     354,      20,     293,     293,     408,
      19,     403,      76,     390,     410,     391,     330,     331,
     332,     415,     334,     411,      18,      78,     376,     335,
     337,      17,      12,     338,     212,     212,     212,     419,
     420,     421,     422,     212,     340,     353,     418,     429,
     342,     178,     206,     416,      11,     432,     395,     396,
     397,     266,     205,      64,     402,     266,     178,     180,
     317,     318,     320,     405,       4,     212,       1,     431,
     407,     443,       0,     212,     430,     409,       0,     444,
     212,       0,     212,     212,     449,       0,     451,     452,
     212,     212,     417,     212,     454,     455,     212,     456,
       0,     180,     457,       0,       0,     412,     413,     414,
      74,       6,       6,     360,     361,     362,     363,       0,
      72,       5,       5,       0,       0,       0,       0,     319,
       0,     387,       0,       0,       0,     428,     255,     257,
     180,     259,       0,       0,       0,       0,       0,     433,
     400,       0,       0,       0,     399,     401,       0,       0,
       0,       0,     107,     436,       0,     439,     441,     442,
       0,       0,      70,       0,       0,       0,       0,       0,
       0,     447,     448,       0,     450,       0,       0,       0,
       0,       0,     453,       0,       0,       0,       0,       0,
     160,      16,      16,       0,       0,       0,      98,      16,
       0,     190,      16,      80,       0,       0,       0,       0,
     200,      16,       0,       0,       0,       0,       0,     423,
     424,      98,     427,       0,       0,     425,     426,       0,
       0,      89,      92,       0,       0,      98,       0,       0,
      97,       0,      99,       0,       0,       0,       0,       0,
     155,       0,     438,     440,     180,     150,     437,      37,
       0,     151,     152,     203,     153,       0,     446,       0,
       0,       0,     445,       0,       0,     180,       0,     180,
       0,       0,      68,      16,       0,     180,      80,     180,
       0,     180,     180,       0,       0,     180,     180,     180,
     180,     267,       0,       0,       0,     180,     180,       0,
      16,     180,     180,       0,       0,     180,     180,     180,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,     180,     221,     222,
     223,       0,     225,     200,       0,     200,     180,       0,
     180,       0,       0,       0,       0,       0,       0,       0,
       0,       0,      75,       0,     104,     154,     248,     256,
     256,       0,     260,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,       0,     180,
       0,       0,       0,       0,       0,       0,       0,     155,
       0,       0,       0,       0,     150,       0,      37,       0,
     151,     152,       0,     153,       0,       0,       0,       0,
     180,       0,       0,       0,       0,     267,       0,     308,
       0,      68,       0,       0,       0,     180,       0,       0,
       0,      16,       0,       0,       0,       0,       0,       0,
       0,       0,       0,     180,       0,       0,       0,       0,
       0,     155,       0,       0,       0,       0,     150,       0,
      37,       0,     151,     152,       0,     153,       0,     190,
       0,       0,       0,       0,       0,     190,       0,       0,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,      75,       0,     104,     154,       0,       0,       0,
       0,       0,       0,       0,     355,       0,       0,     111,
       0,     163,     164,     162,     166,      36,       0,     165,
       0,     136,     126,       0,     190,     135,     127,     132,
       0,       0,       0,     155,       0,     133,     134,     129,
     150,       0,      37,     137,     151,     152,     156,     153,
       0,     130,     190,     308,     377,     308,     154,     131,
       0,       0,       0,       0,       0,      68,       0,       0,
     148,     149,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,     398,       0,
       0,       0,       0,       0,       0,     155,       0,       0,
       0,       0,     150,       0,      37,       0,     151,     152,
       0,     153,       0,     355,     355,     155,       0,       0,
       0,       0,     150,       0,      37,     155,     151,     152,
       0,     153,     150,       0,      37,     188,     151,     152,
     377,     153,       0,       0,       0,      75,       0,      68,
     154,       0,       0,       0,       0,      16,     111,       0,
     163,     164,     162,     166,      36,      31,     165,      38,
     136,     126,      43,      53,     135,     127,     132,      44,
       0,      58,      39,      45,     133,     134,     129,      46,
      47,      40,     137,      48,      49,     156,      41,      59,
     130,      42,      51,      54,      60,      50,     131,      75,
       0,     104,     154,       0,       0,       0,       0,     148,
     149,       0,     163,     164,     162,     166,      36,      31,
     165,      38,     154,       0,      43,      53,       0,       0,
       0,      44,     154,      58,      39,      45,       0,       0,
       0,      46,      47,      40,       0,      48,      49,     156,
      41,      59,       0,      42,      51,      54,      60,      50,
       0,       0,       0,       0,       0,       0,     155,       0,
       0,     148,     149,     150,       0,      37,     155,     151,
     152,       0,     153,     150,       0,      37,       0,     151,
     152,       0,     153,       0,       0,       0,       0,       0,
       0,       0,     111,       0,     163,     164,     162,     166,
      36,       0,     165,       0,     136,     126,       0,       0,
     135,     127,     132,       0,       0,       0,       0,       0,
     133,     134,     129,       0,       0,       0,     137,       0,
       0,     156,       0,       0,     130,      37,     188,      35,
       0,       0,     131,       0,       0,       0,       0,       0,
       0,       0,       0,     148,     149,       0,     163,     164,
     162,     166,      36,       0,     165,       0,       0,       0,
      75,       0,       0,     154,     336,       0,     163,     164,
     162,     166,      36,     154,     165,       0,     163,     164,
     162,     166,      36,     156,     165,     155,       0,       0,
      81,       0,     150,       0,      37,       0,     151,     152,
       0,     153,       0,     156,       0,     148,     149,       0,
       0,       0,       0,     156,       0,       0,       0,      68,
       0,       0,       0,       0,       0,     148,     149,       0,
       0,       0,     155,       0,       0,     148,     149,     150,
       0,      37,       0,     151,     152,       0,     153,       0,
     155,       0,       0,       0,       0,     150,       0,      37,
       0,     151,     152,       0,     153,       0,       0,       0,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,       0,     154,       0,       0,       0,     179,       0,
       0,       0,       0,       0,      37,       0,      35,       0,
       0,       0,       0,       0,       0,     323,       0,     163,
     164,     162,     166,      36,       0,     165,       0,     163,
     164,     162,     166,      36,       0,     165,       0,     154,
       0,       0,       0,       0,       0,       0,      37,       0,
      35,       0,      75,       0,     156,     154,       0,       0,
       0,       0,       0,       0,     156,       0,       0,      81,
       0,      68,       0,       0,       0,       0,     148,     149,
       0,       0,       0,       0,       0,       0,     148,     149,
      37,       0,      35,      36,      31,       0,      38,       0,
       0,      43,      53,       0,       0,       0,      44,       0,
      58,      39,      45,      68,       0,       0,      46,      47,
      40,       0,      48,      49,       0,      41,      59,       0,
      42,      51,      54,      60,      50,      37,       0,      35,
       0,       0,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,     163,     164,
     162,     166,      36,       0,     165,       0,       0,       0,
       0,       0,       0,       0,       0,       0,       0,      37,
       0,      35,       0,       0,       0,       0,       0,       0,
       0,       0,       0,     156,       0,       0,       0,       0,
      81,     215,       0,     163,     164,     162,     166,      36,
       0,     165,       0,       0,       0,     148,     149,       0,
       0,     163,     164,     162,     166,      36,       0,     165,
      37,       0,      35,       0,       0,       0,       0,       0,
     156,       0,       0,       0,       0,       0,       0,       0,
       0,       0,       0,       0,       0,       0,     156,       0,
       0,       0,     148,     149,       0,       0,       0,       0,
       0,       0,       0,     188,     305,       0,       0,       0,
     148,     149,      36,      31,       0,      38,       0,       0,
      43,      53,       0,       0,       0,      44,       0,      58,
      39,      45,       0,       0,       0,      46,      47,      40,
       0,      48,      49,       0,      41,      59,     174,      42,
      51,      54,      60,      50,      36,      31,       0,      38,
       0,       0,      43,      53,       0,       0,       0,      44,
       0,      58,      39,      45,       0,      91,       0,      46,
      47,      40,       0,      48,      49,       0,      41,      59,
      63,      42,      51,      54,      60,      50,      36,      31,
       0,      38,       0,       0,      43,      53,       0,       0,
       0,      44,       0,      58,      39,      45,       0,       0,
       0,      46,      47,      40,       0,      48,      49,       0,
      41,      59,       0,      42,      51,      54,      60,      50,
      37,       0,      35,      36,      31,       0,      38,       0,
       0,      43,      53,      75,       0,       0,      44,       0,
      58,      39,      45,       0,       0,       0,      46,      47,
      40,       0,      48,      49,       0,      41,      59,       0,
      42,      51,      54,      60,      50,      36,      31,     188,
      38,       0,       0,      43,      53,      75,       0,       0,
      44,       0,      58,      39,      45,       0,       0,       0,
      46,      47,      40,       0,      48,      49,       0,      41,
      59,       0,      42,      51,      54,      60,      50,       0,
       3,       0,       0,       0,       0,       0,      36,      31,
       0,      38,       0,       0,      43,      53,       0,       0,
       0,      44,       0,      58,      39,      45,       0,       0,
       0,      46,      47,      40,       0,      48,      49,       0,
      41,      59,     187,      42,      51,      54,      60,      50,
      36,      31,       0,      38,       0,       0,      43,      53,
       0,       0,       0,      44,       0,      58,      39,      45,
       0,       0,       0,      46,      47,      40,       0,      48,
      49,       0,      41,      59,       0,      42,      51,      54,
      60,      50,       0,       0,       0,       0,      36,      31,
       0,      38,       0,       0,      43,      53,       0,       0,
       0,      44,       0,      58,      39,      45,       0,       0,
       0,      46,      47,      40,       0,      48,      49,       0,
      41,      59,      71,      42,      51,      54,      60,      50,
      36,      31,       0,      38,       0,       0,      43,      53,
       0,       0,       0,      44,       0,      58,      39,      45,
       0,       0,       0,      46,      47,      40,       0,      48,
      49,       0,      41,      59,       0,      42,      51,      54,
      60,      50,       0,       0,       0,       0,      36,      31,
       0,      38,       0,       0,      43,      53,       0,       0,
       0,      44,       0,      58,      39,      45,       0,       0,
       0,      46,      47,      40,       0,      48,      49,       0,
      41,      59,       0,      42,      51,      54,      60,      50,
       0,       0,       0,       0,      36,      31,      75,      38,
       0,       0,      43,      53,       0,       0,       0,      44,
       0,      58,      39,      45,       0,       0,       0,      46,
      47,      40,       0,      48,      49,       0,      41,      59,
       0,      42,      51,      54,      60,      50,     374,       0,
       0,       0,       0,      36,      31,       0,      38,       0,
       0,      43,      53,       0,       0,       0,      44,       0,
      58,      39,      45,       0,       0,       0,      46,      47,
      40,       0,      48,      49,       0,      41,      59,     313,
      42,      51,      54,      60,      50,      36,      31,       0,
      38,       0,       0,      43,      53,       0,       0,       0,
      44,       0,      58,      39,      45,       0,       0,       0,
      46,      47,      40,       0,      48,      49,       0,      41,
      59,     201,      42,      51,      54,      60,      50,      36,
      31,       0,      38,       0,       0,      43,      53,       0,
       0,       0,      44,       0,      58,      39,      45,       0,
       0,       0,      46,      47,      40,       0,      48,      49,
       0,      41,      59,       0,      42,      51,      54,      60,
      50,      36,      31,       0,      38,       0,       0,      43,
      53,       0,       0,       0,      44,       0,      58,      39,
      45,       0,       0,       0,      46,      47,      40,       0,
      48,      49,       0,      41,      59,       0,      42,      51,
      54,      60,      50,
};

const int yypact[] = {
    1376,    1520,   -1000,   -1000,   -1000,   -1000,    1264,    1482,
   -1000,      18,      76,   -1000,   -1000,   -1000,      13,   -1000,
      22,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,     -80,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,    1448,      21,
      73,   -1000,   -1000,   -1000,   -1000,    1699,   -1000,     -32,
   -1000,     670,    1230,   -1000,   -1000,      76,   -1000,    1137,
    1410,   -1000,      13,   -1000,   -1000,      79,     -32,    1665,
    1699,   -1000,    1151,   -1000,   -1000,   -1000,   -1000,      22,
   -1000,   -1000,   -1000,   -1000,     670,     551,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,      50,
      61,     997,      61,      23,   -1000,     101,     101,     101,
     794,     101,    -214,      50,      50,    1100,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,     -16,     -25,      31,     997,     997,
     997,     997,    -271,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,   -1000,     -48,   -1000,   -1000,
     720,       5,   -1000,   -1000,   -1000,   -1000,   -1000,      98,
    -266,     -31,    -283,      85,      92,   -1000,      50,      39,
      11,   -1000,   -1000,   -1000,   -1000,   -1000,      79,      94,
   -1000,      96,   -1000,   -1000,   -1000,   -1000,    1196,   -1000,
   -1000,   -1000,    1665,     -59,    1631,      96,   -1000,   -1000,
    1335,      50,      39,   -1000,   -1000,   -1000,     989,   -1000,
     551,   -1000,   -1000,   -1000,      61,   -1000,     794,   -1000,
      61,     794,   -1000,     997,     997,     997,     997,     997,
    -259,     860,      50,   -1000,   -1000,      23,   -1000,     997,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,     997,     997,   -1000,   -1000,     997,
     868,    -214,    -214,   -1000,   -1000,   -1000,   -1000,   -1000,
     997,   -1000,   -1000,   -1000,     720,     997,   -1000,     997,
   -1000,      79,      83,    1301,   -1000,     997,   -1000,     997,
   -1000,     997,     997,   -1000,   -1000,     997,     997,     997,
     997,   -1000,   -1000,   -1000,   -1000,     997,     997,   -1000,
   -1000,     997,     997,   -1000,   -1000,     997,     997,     997,
   -1000,   -1000,   -1000,   -1000,   -1000,    -214,    1597,   -1000,
   -1000,   -1000,      14,      76,    1045,    1137,     -59,   -1000,
   -1000,      50,    -206,      73,   -1000,      61,     997,   -1000,
     997,      29,   -1000,   -1000,   -1000,   -1000,     794,   -1000,
   -1000,   -1000,      83,      83,      83,     101,      23,    1100,
      79,   -1000,   -1000,   -1000,      89,    -271,      49,      94,
   -1000,   -1000,   -1000,   -1000,      79,     -48,       5,     997,
   -1000,   -1000,      76,    1045,      98,    -266,     -31,     -31,
    -283,    -283,    -283,    -283,      85,      85,      92,      92,
   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,   -1000,      76,
    1137,    1558,      79,      79,   -1000,      11,   -1000,   -1000,
   -1000,      39,   -1000,   -1000,       7,     997,   -1000,   -1000,
   -1000,     844,   -1000,     794,     794,     794,     997,    1100,
      23,     868,     794,     997,   -1000,   -1000,     997,   -1000,
   -1000,      11,   -1000,      79,   -1000,   -1000,   -1000,   -1000,
   -1000,   -1000,   -1000,   -1000,    -235,   -1000,   -1000,      83,
      23,     868,     868,      83,     794,   -1000,   -1000,   -1000,
   -1000,   -1000,     794,   -1000,      50,     868,      83,     794,
      83,     794,     794,   -1000,   -1000,   -1000,      83,     794,
     794,   -1000,     794,   -1000,   -1000,     794,   -1000,   -1000,
   -1000,   -1000,
};

const int yypgo[] = {
       0,     430,     143,     428,     472,     464,      35,     118,
     506,     419,     165,      87,     412,     394,     111,     393,
     388,     376,     372,     369,     366,     365,     364,     362,
     357,     352,     314,     308,     287,     285,       0,     275,
     265,     264,      16,      79,      12,     263,     262,     260,
     259,     257,      61,      97,      19,      40,       5,     255,
      22,      36,      60,      11,      15,      18,     536,      83,
      14,       3,       9,     254,       6,     252,     249,     248,
      26,     137,      24,     247,      51,      13,       4,     246,
     242,     241,     239,     238,     235,     234,     160,      95,
     233,     232,     228,     108,     225,     224,     216,     214,
     211,     210,      32,     343,     207,     204,     202,      59,
     200,      68,     199,      46,     198,      41,     190,      44,
     188,      86,     187,     186,     189,     185,     184,     183,
     178,      72,     177,     176,      57,     175,     173,      23,
     171,     170,     166,      85,      78,     163,     159,     158,
     157,     155,     153,     152,     150,     149,     148,
};

const int yyr1[] = {
       0,       1,       1,       1,       2,       2,       3,       3,
       3,       3,       3,       3,       4,       4,       4,       7,
       7,       5,       5,      11,      11,      11,      12,      12,
      12,      12,      12,      13,      13,      13,      13,      13,
      13,      13,      13,      13,      13,      13,      13,      14,
      14,      29,      29,      29,      33,      33,      33,      35,
      35,      40,      40,       9,       9,      43,      43,      42,
      42,      47,      47,      48,      48,      48,      41,      41,
      51,      51,      51,       6,       6,      53,      53,      53,
      53,      53,      53,      53,      52,      52,      52,      52,
      61,      61,      58,      58,      62,      62,      64,      64,
      64,      64,      59,      59,      59,      46,      46,      46,
      67,      67,      67,      68,      68,      65,      65,      65,
      69,      69,      69,      69,      69,      69,      69,      69,
      69,      70,      70,      70,      70,      70,      70,      70,
      71,      71,      71,      30,      72,      72,       8,       8,
       8,       8,      79,      79,      73,      73,      73,      74,
      74,      74,      74,      74,      74,      74,      74,      74,
      74,      74,      75,      75,      75,      75,      75,      78,
      78,      78,      66,      66,      92,      92,      92,      92,
      92,      92,      92,      92,      92,      92,      92,      90,
      90,      50,      93,      93,      95,      95,      97,      97,
      99,      99,     101,     101,     103,     103,     103,     105,
     105,     105,     105,     105,     108,     108,     108,     113,
     113,     113,     116,     116,     116,     116,     119,     119,
      91,      91,      91,      91,      91,      91,     125,     125,
     125,     125,     125,     125,     122,     122,     122,     122,
     122,     122,     122,     122,     127,     127,     127,     127,
     132,     128,     128,     131,     131,     131,     131,      10,
      34,      36,      44,      45,      49,      54,      55,      56,
      57,      60,      63,      94,      96,      98,     100,     102,
     104,     106,     107,     109,     110,     111,     112,     114,
     115,     117,     118,     120,     121,     133,     134,     130,
     123,     124,     129,      15,      88,      76,      20,      31,
      87,      77,      84,      21,      81,      37,      16,      22,
      85,      86,      80,      23,      24,      17,      89,      25,
      26,     126,      18,      38,      82,      19,      28,      32,
      39,      27,      83,
};

const int yyr2[] = {
       0,       1,       2,       1,       1,       1,       4,       3,
       3,       2,       3,       3,       3,       2,       3,       1,
       2,       1,       2,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       5,       4,       2,       1,       1,       1,       1,
       1,       1,       2,       1,       3,       1,       3,       3,
       2,       1,       3,       1,       3,       2,       1,       3,
       1,       3,       1,       2,       1,       1,       3,       4,
       3,       4,       4,       3,       2,       1,       3,       2,
       1,       2,       1,       3,       1,       3,       2,       2,
       1,       2,       1,       3,       1,       1,       3,       4,
       1,       3,       1,       2,       1,       1,       2,       1,
       3,       4,       3,       3,       2,       4,       3,       3,
       2,       1,       1,       1,       1,       1,       1,       2,
       3,       4,       3,       1,       2,       1,       4,       3,
       3,       2,       1,       2,       5,       7,       5,       5,
       7,       9,       8,       8,       7,       8,       7,       7,
       6,       5,       3,       2,       2,       3,       2,       1,
       3,       3,       1,       3,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       5,       1,       1,       3,       1,       3,       1,       3,
       1,       3,       1,       3,       1,       3,       3,       1,
       3,       3,       3,       3,       1,       3,       3,       1,
       3,       3,       1,       3,       3,       3,       1,       4,
       1,       2,       2,       2,       2,       4,       1,       1,
       1,       1,       1,       1,       1,       4,       4,       3,
       3,       3,       2,       2,       1,       1,       1,       3,
       1,       1,       3,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,       1,       1,       1,       1,       1,
       1,       1,       1,
};

const int yychk[] = {
   -1000,      -1,      -2,     256,      -3,      -4,      -5,      -6,
     -11,     -52,     -53,     -12,     -13,     -14,     -60,     -30,
     -54,     -15,     -16,     -17,     -18,     -19,     -20,     -21,
     -22,     -23,     -24,     -25,     -26,     -27,     -28,     263,
     -29,     -31,     -32,      42,     262,      40,     265,     276,
     283,     288,     291,     268,     273,     277,     281,     282,
     285,     286,     295,     292,     -33,     269,     293,     -37,
     -38,     -39,     275,     289,     294,      -2,      -6,     256,
      -9,     -10,     -11,     -43,      59,      -7,      -8,     256,
      -4,     -34,      -5,     123,     -30,     -53,     -30,     -56,
     -54,      91,     -61,     -52,     -14,      -6,     -30,     -34,
      -7,      -8,     -45,      61,      -8,     -10,     -10,     -44,
      44,      -8,      -4,      -8,      -7,     -79,     -36,     -70,
     125,     -71,     -72,      -8,     -73,     -74,     -75,     256,
     -30,     -76,     -77,     -78,     -10,     -80,     -82,     -83,
     -84,     -85,     -86,     -87,     -88,     -89,     267,     271,
     -66,     280,     290,     296,     272,     278,     279,     270,
     266,     284,     -90,     -91,     -93,    -122,    -123,    -124,
    -125,    -126,     -95,    -127,     305,     306,      38,      42,
      43,      45,     126,      33,     287,     -97,    -131,    -132,
     -54,     -99,     260,     258,     259,     264,     261,    -101,
    -103,    -105,    -108,    -113,    -116,    -119,     256,      -6,
     -50,     -57,     -90,      93,     -91,     -30,     -58,     -59,
     -55,     -62,     -30,     256,      41,     -64,      -5,     -52,
     -14,     -55,     -34,     -35,     -40,     -41,     -42,     -51,
      -5,     256,     -30,      -8,     -46,     -66,     -34,     -43,
     -79,     -36,     -36,     -70,     -30,     -10,     -49,      58,
     -50,     -49,     -10,     -44,     256,     -54,     -54,     -54,
     -70,     -54,     -30,     -10,     -10,     -78,     -10,     -92,
      61,     310,     311,     312,     308,     309,     313,     314,
     315,     317,     316,     -94,     -96,      63,     297,     -56,
     -54,    -129,    -130,    -123,    -124,      46,     307,     -91,
     -54,     -91,    -119,     -91,     -54,     -98,     298,    -100,
     124,     -68,     -78,      -5,     -30,    -102,      94,    -104,
      38,    -106,    -107,     299,     300,    -109,    -110,    -111,
    -112,      60,      62,     301,     302,    -114,    -115,     303,
     304,    -117,    -118,      43,      45,     -60,    -120,    -121,
      47,      37,     -57,     -55,     -55,     -44,     -44,      -6,
     -65,     256,     -52,     -69,     -54,     -56,     -35,     -36,
     -42,     256,     -44,     -47,     -48,      -6,     -49,     -10,
     -45,     -67,     -46,     256,     -36,     -70,     -49,     -70,
     -66,     -66,     -78,     -78,     -78,     -83,     -78,     -10,
     256,     -10,     -10,     -66,     -78,     -95,     -78,    -128,
     -55,     -66,     -30,     -30,     -68,     -97,     -99,     -55,
     -55,     -65,     -52,     -54,    -101,    -103,    -105,    -105,
    -108,    -108,    -108,    -108,    -113,    -113,    -116,    -116,
    -119,    -119,    -119,     -30,     -63,     -64,     257,     -69,
     -56,     -54,     -65,     -58,     -55,     -50,     -57,     -36,
     -51,     -30,     256,     -10,     -44,     -49,     -50,     -50,
     -36,     -44,     -70,     -55,     -55,     -55,     -54,     -10,
     -78,     -10,     -55,     -49,     -57,     -55,     -44,     -55,
    -119,     -50,     -57,     -58,     -55,     -55,     -55,     -57,
     -48,     -50,     -36,     -46,     -70,     -70,     -70,     -78,
     -78,     -10,     -10,     -78,     -55,     -70,     -90,     -66,
     -57,     -55,     -81,     274,     -55,     -10,     -78,     -55,
     -78,     -55,     -55,     -70,     -70,     -10,     -78,     -55,
     -55,     -70,     -55,     -70,     -70,     -55,     -70,     -70,
     -70,     -70,
};

const int yydef[] = {
       0,      -2,       1,       3,       4,       5,       0,       0,
      17,       0,      68,      19,      20,      21,      77,      -2,
       0,      22,      23,      24,      25,      26,      27,      28,
      29,      30,      31,      32,      33,      34,      35,      36,
      37,      39,      40,     241,     123,     237,     267,     278,
     285,     290,     293,     270,     275,     279,     283,     284,
     287,     288,     297,     294,       0,     271,     295,      44,
      45,      46,     277,     291,     296,       2,      53,       0,
       0,      13,      18,      51,     231,       0,       9,       0,
      15,       0,       0,     232,      38,      67,      69,       0,
       0,     239,      76,      79,      80,       0,      43,       0,
       0,       7,       0,     235,      10,      14,      12,       0,
     234,       8,      16,      11,       0,       0,     129,     130,
     233,     113,     114,     115,     116,     117,     118,       0,
      -2,       0,       0,       0,     125,       0,       0,       0,
       0,       0,       0,       0,       0,       0,     269,     273,
     151,     282,     292,     298,     274,     280,     281,     272,
     268,     286,     154,     198,     167,     200,       0,       0,
       0,       0,     170,     212,     264,     265,     206,     207,
     208,     209,     210,     211,     289,     172,     221,     222,
       0,     174,     227,     228,     229,     230,     224,     176,
     178,     180,     183,     188,     191,     194,       0,      53,
       0,      72,     169,     240,     198,     220,       0,       0,
      75,      82,      38,      92,     238,      84,      88,      78,
      81,      70,       0,       0,      47,      48,      49,      62,
       0,      66,      -2,       6,      54,      93,       0,      52,
       0,     127,     128,     131,     220,     119,       0,     236,
       0,       0,     124,       0,       0,       0,       0,       0,
       0,       0,       0,     147,     148,       0,     150,       0,
     156,     157,     158,     159,     160,     161,     162,     163,
     164,     165,     166,       0,       0,     243,     244,       0,
       0,       0,       0,     218,     219,     266,     263,     201,
       0,     202,     203,     204,       0,       0,     245,       0,
     246,       0,       0,     100,      -2,       0,     247,       0,
     248,       0,       0,     249,     250,       0,       0,       0,
       0,     251,     252,     253,     254,       0,       0,     255,
     256,       0,       0,     257,     258,       0,       0,       0,
     259,     260,      71,      73,      74,       0,       0,      86,
      87,      89,     101,     103,       0,       0,       0,      42,
      50,       0,       0,       0,      57,      59,       0,      56,
       0,       0,      96,      98,     126,     120,       0,     122,
     152,     153,       0,       0,       0,       0,       0,       0,
       0,     146,     149,     155,       0,     171,       0,       0,
     215,     225,     216,     217,       0,     173,     175,       0,
     223,      99,     101,       0,     177,     179,     181,     182,
     184,     185,     186,     187,     189,     190,     192,     193,
     195,     196,     197,      91,      83,      85,     242,     102,
       0,       0,       0,       0,     112,       0,     108,      41,
      63,      64,      66,      55,       0,       0,      61,      65,
      94,       0,     121,       0,       0,       0,       0,       0,
       0,       0,       0,       0,     213,     214,       0,     205,
     199,       0,     106,       0,     110,     104,     111,     107,
      58,      60,      95,      97,     132,     134,     135,       0,
       0,       0,       0,       0,       0,     145,     168,     226,
     105,     109,       0,     276,       0,       0,       0,       0,
       0,       0,       0,     144,     133,     136,       0,       0,
       0,     140,       0,     142,     143,       0,     138,     139,
     141,     137,
};

/* 
 * YACCPAR.C - PCYACC LR parser driver routine for use with improved errorlib
 *
 *	(c) Copyright 1989, Abraxas Software, Inc.
*/

#include "errorlib.h"

#define yyerrok		errfl = 0
#define yyclearin	if (token == 0) return 1; else token = -1
#define YYFLAG -1000
#define YYERROR goto yyerrlab
#define YYACCEPT return(0)
#define YYABORT return(1)

#ifndef YYMAXDEPTH
#define YYMAXDEPTH	100
#endif

YYSTYPE yyv[YYMAXDEPTH];
int token = -1; /* input token */
int errct = 0;  /* error count */
int errfl = 0;  /* error flag */


int yyparse(void)
{
     int yys[YYMAXDEPTH];
     int yyj, yym;
     YYSTYPE *yypvt;
     int yystate, *yyps, yyn;
     YYSTYPE *yypv;
     const int *yyxi;

#ifdef YYDEBUG
     printf("state 0\n");
#endif
     yystate = 0;
     token = -1;
     errct = 0;
     errfl = 0;
     yyps = yys - 1;
     yypv = yyv - 1;

yystack:    /* put a state and value onto the stack */
     if ( ++yyps > yys + YYMAXDEPTH ) {
       yyerror( "yacc stack overflow", 0 );
       return(1);
     }
     *yyps = yystate;
     ++yypv;
     *yypv = yyval;

yynewstate:
     yyn = yypact[yystate];

     if ( yyn <= YYFLAG )
	  goto yydefault; /* simple state with only default action */

     if ( token < 0 ) {		/* no lookahead token? */
	  if ( (token = yylex()) < 0 )
	       token = 0;
     }
     yyn += token;
     if ( yyn < 0 || yyn >= YYLAST )	/* no entry within table? */
	  goto yydefault;	/* simple state with only default action */

     if ( yychk[yyn = yyact[yyn]] == token ) {	/* valid shift? */
#ifdef YYDEBUG
	  printf("shift on [%s] to state %d\n", yydisplay(token), yyn);
#endif
	  token = -1;		/* lookahead token is read */
	  yyval = yylval;
	  yystate = yyn;
	  if ( errfl > 0 )	/* still in error state? */
	       --errfl;
	  goto yystack;
     }

yydefault:	/* simple state with only default action */
     if ( (yyn = yydef[yystate]) == -2 ) {
	  if ( token < 0 ) {	/* no lookahead token? */
	       if ( (token = yylex()) < 0 )
		    token = 0;
	  }

          /* look through exception table */
          for ( yyxi = yyexca; *yyxi != -1 || yyxi[1] != yystate ; yyxi += 2 )
	       ;		/* VOID */
          while( *(yyxi += 2) >= 0 ) {
	       if ( *yyxi == token )
	            break;
          }
          if ( (yyn = yyxi[1]) < 0 ) {
#ifdef YYDEBUG
	       printf("accept\n");
#endif
	       return 0;   /* accept */
	  }
     }

     if ( yyn == 0 ) {		/* error? */
	  switch( errfl ) {
	       case 0:   /* brand new error */
		    yyerror( "syntax error", yydisplay( token ));
		    if ( (yyn = yypact[yystate]) > YYFLAG && yyn < YYLAST) {
			 register int x;

			 for ( x = (yyn > 0) ? yyn : 0; x < YYLAST; ++x ) {
			      if ( yychk[yyact[x]] == x - yyn &&
					x - yyn != YYERRCODE )
				   yyerror( 0, yydisplay( x - yyn ));
			 }
		    }
		    yyerror( 0, 0 );
yyerrlab:
		    ++errct;

	  case 1:
	  case 2: /* incompletely recovered error ... try again */
		    errfl = 3;

		    /* find a state where "error" is a legal shift action */
		    while ( yyps >= yys ) {
			 yyn = yypact[*yyps] + YYERRCODE;
			 if ( yyn >= 0 && yyn < YYLAST &&
					yychk[yyact[yyn]] == YYERRCODE ){
			      /* simulate a shift of "error" */
			      yystate = yyact[yyn];
#ifdef YYDEBUG
			      printf("shift on [error] to state %d\n",
				    yystate);
#endif
			      goto yystack;
			 }
		         yyn = yypact[*yyps];
			 /* the current yyps has no shift on "error",
				pop stack */
			 --yyps;
			 --yypv;
#ifdef YYDEBUG
			printf("error: pop state %d, uncovering state %d\n",
			      yyps[1], yyps[0]);
#endif
		    }

	    /* there is no state on the stack with an error shift ... abort */
yyabort:

#ifdef YYDEBUG
		    printf("abort\n");
#endif
		    return 1;

	       case 3:  /* no shift yet; clobber input char */
#ifdef YYDEBUG
		    printf("error: discard [%s]\n", yydisplay(token));
#endif
		    if ( token == 0 )	/* EOF? */
			 goto yyabort;		/* don't discard EOF, quit */
		    token = -1;
		    goto yynewstate;   /* try again in the same state */
	  }
     }

     /* reduction by production yyn */
     yyps -= yyr2[yyn];
     yypvt = yypv;
     yypv -= yyr2[yyn];
     yyval = yypv[1];
     yym = yyn;
     /* consult goto table to find next state */
     yyn = yyr1[yyn];
     yyj = yypgo[yyn] + *yyps + 1;
     if ( yyj >= YYLAST || yychk[yystate = yyact[yyj]] != -yyn )
	  yystate = yyact[yypgo[yyn]];
#ifdef YYDEBUG
     printf("reduce w/ rule %d, uncover state %d, go to state %d\n", yym,
	  *yyps, yystate);
#endif
     switch (yym) {
	  
case 1:{ 
      translationUnit->addNodeLast(yypvt[-0].node);
    } break;
case 2:{ 
      translationUnit->addNodeLast(yypvt[-0].node);
    } break;
case 4:{
      external_declaration* externalDeclaration;
      externalDeclaration = new external_declaration;
      externalDeclaration->setNodeType(EXTERNAL_DECLARATION);
      externalDeclaration->setDecompositionRule(1);
      externalDeclaration->functionDefinition = yypvt[-0].node;
      yyval.node = externalDeclaration;
    } break;
case 5:{
      external_declaration* externalDeclaration;
      externalDeclaration = new external_declaration;
      externalDeclaration->setNodeType(EXTERNAL_DECLARATION);
      externalDeclaration->setDecompositionRule(2);
      externalDeclaration->Declaration = yypvt[-0].node;
      yyval.node = externalDeclaration;
    } break;
case 6:{
      function_definition* functionDefinition;
      functionDefinition = new function_definition;
      functionDefinition->setNodeType(FUNCTION_DEFINITION);
      functionDefinition->setDecompositionRule(1);
	  functionDefinition->declarationSpecifiers = yypvt[-3].list;
	  functionDefinition->Declarator = yypvt[-2].node;
	  functionDefinition->declarationList = yypvt[-1].list;
	  functionDefinition->compoundStatement = yypvt[-0].node;
      yyval.node = functionDefinition;
    } break;
case 7:{
      function_definition* functionDefinition;
      functionDefinition = new function_definition;
      functionDefinition->setNodeType(FUNCTION_DEFINITION);
      functionDefinition->setDecompositionRule(2);
	  functionDefinition->declarationSpecifiers = yypvt[-2].list;
	  functionDefinition->Declarator = yypvt[-1].node;
	  functionDefinition->declarationList = NULL;
	  functionDefinition->compoundStatement = yypvt[-0].node;
      yyval.node = functionDefinition;
    } break;
case 8:{
      function_definition* functionDefinition;
      functionDefinition = new function_definition;
      functionDefinition->setNodeType(FUNCTION_DEFINITION);
      functionDefinition->setDecompositionRule(3);
	  functionDefinition->declarationSpecifiers = NULL;
	  functionDefinition->Declarator = yypvt[-2].node;
	  functionDefinition->declarationList = yypvt[-1].list;
	  functionDefinition->compoundStatement = yypvt[-0].node;
      yyval.node = functionDefinition;
    } break;
case 9:{
      function_definition* functionDefinition;
      functionDefinition = new function_definition;
      functionDefinition->setNodeType(FUNCTION_DEFINITION);
      functionDefinition->setDecompositionRule(4);
	    functionDefinition->declarationSpecifiers = NULL;
	    functionDefinition->Declarator = yypvt[-1].node;
	    functionDefinition->declarationList = NULL;
	     functionDefinition->compoundStatement = yypvt[-0].node;
      yyval.node = functionDefinition;
    } break;
case 12:{
      declaration* Declaration;
      Declaration = new declaration;
      Declaration->setNodeType(DECLARATION);
      Declaration->setDecompositionRule(1);
	    Declaration->declarationSpecifiers = yypvt[-2].list;
	    Declaration->initDeclaratorList = yypvt[-1].list;
      Declaration->Semicolon = yypvt[-0].node;
      //john(Declaration)
      yyval.node = Declaration;
    } break;
case 13:{
      declaration* Declaration;
      Declaration = new declaration;
      Declaration->setNodeType(DECLARATION);
      Declaration->setDecompositionRule(2);
      Declaration->declarationSpecifiers = yypvt[-1].list;
      Declaration->Semicolon = yypvt[-0].node;
      yyval.node = Declaration;
    } break;
case 14:{ yyerrok; } break;
case 15:{
	  declaration_list* declarationList;
	  declarationList = new declaration_list;
	  declarationList->setNodeType(DECLARATION_LIST);
    declarationList->setNewlineSeparated();
	  declarationList->addNodeLast(yypvt[-0].node);
	  yyval.list = declarationList;
    } break;
case 16:{
	  yypvt[-1].list->addNodeLast(yypvt[-0].node);
	  yyval.list = yypvt[-1].list;
    } break;
case 17:{
	    declaration_specifiers* declarationSpecifiers;
	    declarationSpecifiers = new declaration_specifiers;
	    declarationSpecifiers->setNodeType(DECLARATION_SPECIFIERS);
	    declarationSpecifiers->addNodeLast(yypvt[-0].node);
	    yyval.list = declarationSpecifiers;
    } break;
case 18:{
	    yypvt[-1].list->addNodeLast(yypvt[-0].node);
	    yyval.list = yypvt[-1].list;
    } break;
case 19:{
	  declaration_specifier* declarationSpecifier;
	  declarationSpecifier = new declaration_specifier;
	  declarationSpecifier->setNodeType(DECLARATION_SPECIFIER);
	  declarationSpecifier->setDecompositionRule(1);
    declarationSpecifier->storageClassSpecifier = yypvt[-0].node;
	  yyval.node = declarationSpecifier;
	} break;
case 20:{
	  declaration_specifier* declarationSpecifier;
	  declarationSpecifier = new declaration_specifier;
	  declarationSpecifier->setNodeType(DECLARATION_SPECIFIER);
	  declarationSpecifier->setDecompositionRule(2);
    declarationSpecifier->typeSpecifier = yypvt[-0].node;
	  yyval.node = declarationSpecifier;
	} break;
case 21:{
	  declaration_specifier* declarationSpecifier;
	  declarationSpecifier = new declaration_specifier;
	  declarationSpecifier->setNodeType(DECLARATION_SPECIFIER);
	  declarationSpecifier->setDecompositionRule(3);
    declarationSpecifier->typeQualifier = yypvt[-0].node;
	  yyval.node = declarationSpecifier;
	} break;
case 22:{
      storage_class_specifier* storageClassSpecifier;
      storageClassSpecifier = new storage_class_specifier;
      storageClassSpecifier->setNodeType(STORAGE_CLASS_SPECIFIER);
      storageClassSpecifier->setDecompositionRule(1);
      storageClassSpecifier->Keyword = yypvt[-0].node;
      yyval.node = storageClassSpecifier;
    } break;
case 23:{
      storage_class_specifier* storageClassSpecifier;
      storageClassSpecifier = new storage_class_specifier;
      storageClassSpecifier->setNodeType(STORAGE_CLASS_SPECIFIER);
      storageClassSpecifier->setDecompositionRule(2);
      storageClassSpecifier->Keyword = yypvt[-0].node;
      yyval.node = storageClassSpecifier;
    } break;
case 24:{
      storage_class_specifier* storageClassSpecifier;
      storageClassSpecifier = new storage_class_specifier;
      storageClassSpecifier->setNodeType(STORAGE_CLASS_SPECIFIER);
      storageClassSpecifier->setDecompositionRule(3);
      storageClassSpecifier->Keyword = yypvt[-0].node;
      yyval.node = storageClassSpecifier;
    } break;
case 25:{
      storage_class_specifier* storageClassSpecifier;
      storageClassSpecifier = new storage_class_specifier;
      storageClassSpecifier->setNodeType(STORAGE_CLASS_SPECIFIER);
      storageClassSpecifier->setDecompositionRule(4);
      storageClassSpecifier->Keyword = yypvt[-0].node;
      yyval.node = storageClassSpecifier;
    } break;
case 26:{
      storage_class_specifier* storageClassSpecifier;
      storageClassSpecifier = new storage_class_specifier;
      storageClassSpecifier->setNodeType(STORAGE_CLASS_SPECIFIER);
      storageClassSpecifier->setDecompositionRule(5);
      storageClassSpecifier->Keyword = yypvt[-0].node;
      yyval.node = storageClassSpecifier;
    } break;
case 27:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(1);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 28:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(2);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 29:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(3);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 30:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(4);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 31:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(5);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 32:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(6);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 33:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(7);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 34:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(8);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 35:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(9);
      typeSpecifier->Keyword = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 36:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(10);
      type* Type;
      Type = new type(strlen(yypvt[-0].s));
      Type->setNodeType(TYPE);
      strcpy(Type->stringRepresentation, yypvt[-0].s);
      Type->storeIgnored();
      typeSpecifier->Type = Type;
      yyval.node = typeSpecifier;
    } break;
case 37:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(11);
      typeSpecifier->aggregateSpecifier = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 38:{
      type_specifier* typeSpecifier;
      typeSpecifier = new type_specifier;
      typeSpecifier->setNodeType(TYPE_SPECIFIER);
      typeSpecifier->setDecompositionRule(11);
      typeSpecifier->Identifier = yypvt[-0].node;
      yyval.node = typeSpecifier;
    } break;
case 39:{
      type_qualifier* typeQualifier;
      typeQualifier = new type_qualifier;
      typeQualifier->setNodeType(TYPE_QUALIFIER);
      typeQualifier->setDecompositionRule(1);
      typeQualifier->Keyword = yypvt[-0].node;
      yyval.node = typeQualifier;
    } break;
case 40:{
      type_qualifier* typeQualifier;
      typeQualifier = new type_qualifier;
      typeQualifier->setNodeType(TYPE_QUALIFIER);
      typeQualifier->setDecompositionRule(2);
      typeQualifier->Keyword = yypvt[-0].node;
      yyval.node = typeQualifier;
    } break;
case 41:{
      aggregate_specifier* aggregateSpecifier;
      aggregateSpecifier = new aggregate_specifier;
      aggregateSpecifier->setNodeType(AGGREGATE_SPECIFIER);
      aggregateSpecifier->setDecompositionRule(1);
      aggregateSpecifier->aggregateType = yypvt[-4].node;
      aggregateSpecifier->Identifier = yypvt[-3].node;
      aggregateSpecifier->openCBr = yypvt[-2].node;
      aggregateSpecifier->aggregateMemberList = yypvt[-1].node;
      aggregateSpecifier->closeCBr = yypvt[-0].node;
      yyval.node = aggregateSpecifier;
    } break;
case 42:{
      aggregate_specifier* aggregateSpecifier;
      aggregateSpecifier = new aggregate_specifier;
      aggregateSpecifier->setNodeType(AGGREGATE_SPECIFIER);
      aggregateSpecifier->setDecompositionRule(2);
      aggregateSpecifier->aggregateType = yypvt[-3].node;
      aggregateSpecifier->openCBr = yypvt[-2].node;
      aggregateSpecifier->aggregateMemberList = yypvt[-1].node;
      aggregateSpecifier->closeCBr = yypvt[-0].node;
      yyval.node = aggregateSpecifier;
    } break;
case 43:{
      aggregate_specifier* aggregateSpecifier;
      aggregateSpecifier = new aggregate_specifier;
      aggregateSpecifier->setNodeType(AGGREGATE_SPECIFIER);
      aggregateSpecifier->setDecompositionRule(3);
      aggregateSpecifier->aggregateType = yypvt[-1].node;
      aggregateSpecifier->Identifier = yypvt[-0].node;
      yyval.node = aggregateSpecifier;
    } break;
case 44:{
      aggregate_type* aggregateType;
      aggregateType = new aggregate_type;
      aggregateType->setNodeType(AGGREGATE_TYPE);
      aggregateType->setDecompositionRule(1);
      aggregateType->Keyword = yypvt[-0].node;
      yyval.node = aggregateType;
    } break;
case 45:{
      aggregate_type* aggregateType;
      aggregateType = new aggregate_type;
      aggregateType->setNodeType(AGGREGATE_TYPE);
      aggregateType->setDecompositionRule(2);
      aggregateType->Keyword = yypvt[-0].node;
      yyval.node = aggregateType;
    } break;
case 46:{
      aggregate_type* aggregateType;
      aggregateType = new aggregate_type;
      aggregateType->setNodeType(AGGREGATE_TYPE);
      aggregateType->setDecompositionRule(3);
      aggregateType->Keyword = yypvt[-0].node;
      yyval.node = aggregateType;
    } break;
case 47:{
      aggregate_member_list* aggregateMemberList;
      aggregateMemberList = new aggregate_member_list;
      aggregateMemberList->setNodeType(AGGREGATE_MEMBER_LIST);
      aggregateMemberList->setDecompositionRule(1);
      aggregateMemberList->structDeclarationList = yypvt[-0].list;
      yyval.node = aggregateMemberList;
    } break;
case 48:{
      aggregate_member_list* aggregateMemberList;
      aggregateMemberList = new aggregate_member_list;
      aggregateMemberList->setNodeType(AGGREGATE_MEMBER_LIST);
      aggregateMemberList->setDecompositionRule(2);
      aggregateMemberList->enumeratorList = yypvt[-0].list;
      yyval.node = aggregateMemberList;
    } break;
case 49:{
      struct_declaration_list* structDeclarationList;
      structDeclarationList = new struct_declaration_list;
      structDeclarationList->setNodeType(STRUCT_DECLARATION_LIST);
      structDeclarationList->addNodeLast(yypvt[-0].node);
      yyval.node = structDeclarationList;
    } break;
case 50:{
      yypvt[-1].list->addNodeLast(yypvt[-0].node);
      yyval.list = yypvt[-1].list;
    } break;
case 51:{ 
	  init_declarator_list* initDeclaratorList;
	  initDeclaratorList = new init_declarator_list;
	  initDeclaratorList->setNodeType(INIT_DECLARATOR_LIST);
	  initDeclaratorList->addNodeLast(yypvt[-0].node);
    initDeclaratorList->setCommaSeparated();
	  yyval.list = initDeclaratorList;
	} break;
case 52:{
 	  yypvt[-2].list->addNodeLast(yypvt[-1].node);
 	  yypvt[-2].list->addNodeLast(yypvt[-0].node);
	  yyval.list = yypvt[-2].list;
	} break;
case 53:{
	  init_declarator* initDeclarator;
	  initDeclarator = new init_declarator;
	  initDeclarator->setNodeType(INIT_DECLARATOR);
	  initDeclarator->setDecompositionRule(1);
	  initDeclarator->Declarator = yypvt[-0].node;
	  yyval.node = initDeclarator;
	} break;
case 54:{
	  init_declarator* initDeclarator;
	  initDeclarator = new init_declarator;
	  initDeclarator->setNodeType(INIT_DECLARATOR);
	  initDeclarator->setDecompositionRule(2);
 	  initDeclarator->Declarator = yypvt[-2].node;
    initDeclarator->Equals = yypvt[-1].node;
  	initDeclarator->Initializer = yypvt[-0].node;
	  yyval.node = initDeclarator;
	} break;
case 55:{
      struct_declaration* structDeclaration;
      structDeclaration = new struct_declaration;
      structDeclaration->setNodeType(STRUCT_DECLARATION);
      structDeclaration->setDecompositionRule(1); // =)
      structDeclaration->declarationSpecifiers = yypvt[-2].list;
      structDeclaration->structDeclaratorList = yypvt[-1].list;
      structDeclaration->Semicolon = yypvt[-0].node;
      yyval.node = structDeclaration;
    } break;
case 56:{ yyerrok; } break;
case 57:{
      struct_declarator_list* structDeclaratorList;
      structDeclaratorList = new struct_declarator_list;
      structDeclaratorList->setNodeType(STRUCT_DECLARATOR_LIST);
      structDeclaratorList->setCommaSeparated();
      structDeclaratorList->addNodeLast(yypvt[-0].node);
      yyval.list = structDeclaratorList;
    } break;
case 58:{
      yypvt[-2].list->addNodeLast(yypvt[-1].node);
      yypvt[-2].list->addNodeLast(yypvt[-0].node);
      yyval.list = yypvt[-2].list;
    } break;
case 59:{
      struct_declarator* structDeclarator;
      structDeclarator = new struct_declarator;
      structDeclarator->setNodeType(STRUCT_DECLARATOR);
      structDeclarator->setDecompositionRule(1);
      structDeclarator->Declarator = yypvt[-0].node;
      yyval.node = structDeclarator;
    } break;
case 60:{
      struct_declarator* structDeclarator;
      structDeclarator = new struct_declarator;
      structDeclarator->setNodeType(STRUCT_DECLARATOR);
      structDeclarator->setDecompositionRule(2);
      structDeclarator->Declarator = yypvt[-2].node;
      structDeclarator->Colon = yypvt[-1].node;
      structDeclarator->constantExpression = yypvt[-0].node;
      yyval.node = structDeclarator;
    } break;
case 61:{
      struct_declarator* structDeclarator;
      structDeclarator = new struct_declarator;
      structDeclarator->setNodeType(STRUCT_DECLARATOR);
      structDeclarator->setDecompositionRule(3);
      structDeclarator->Colon = yypvt[-1].node;
      structDeclarator->constantExpression = yypvt[-0].node;
      yyval.node = structDeclarator;
    } break;
case 62:{
      enumerator_list* enumeratorList;
      enumeratorList = new enumerator_list;
      enumeratorList->setNodeType(ENUMERATOR_LIST);
      enumeratorList->setCommaSeparated();
      enumeratorList->addNodeLast(yypvt[-0].node);
      yyval.list = enumeratorList;
    } break;
case 63:{
      yypvt[-2].list->addNodeLast(yypvt[-1].list);
      yypvt[-2].list->addNodeLast(yypvt[-0].list);
      yyval.list = yypvt[-2].list;
    } break;
case 64:{
      enumerator* keyword_Enumerator;
      keyword_Enumerator = new enumerator;
      keyword_Enumerator->setNodeType(ENUMERATOR);
      keyword_Enumerator->setDecompositionRule(1);
      keyword_Enumerator->Identifier = yypvt[-0].node;
      yyval.node = keyword_Enumerator;
    } break;
case 65:{
      enumerator* keyword_Enumerator;
      keyword_Enumerator = new enumerator;
      keyword_Enumerator->setNodeType(ENUMERATOR);
      keyword_Enumerator->setDecompositionRule(2);
      keyword_Enumerator->Identifier = yypvt[-2].node;
      keyword_Enumerator->Equals = yypvt[-1].node;
      keyword_Enumerator->constantExpression = yypvt[-0].node;
      yyval.node = keyword_Enumerator;
    } break;
case 67:{
	    declarator* Declarator;
	    Declarator = new declarator;
	    Declarator->setNodeType(DECLARATOR);
	    Declarator->setDecompositionRule(1); 
	    Declarator->Pointer = yypvt[-1].node;
	    Declarator->directDeclarator = yypvt[-0].node;
	    yyval.node = Declarator;
	  } break;
case 68:{
	    declarator* Declarator;
	    Declarator = new declarator;
	    Declarator->setNodeType(DECLARATOR);
	    Declarator->setDecompositionRule(2); 
	    Declarator->directDeclarator = yypvt[-0].node;
	    yyval.node = Declarator;
    } break;
case 69:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(1);

	  directDeclarator->Identifier = yypvt[-0].node;
	  yyval.node = directDeclarator;
	} break;
case 70:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(2);
	  directDeclarator->openRBr = yypvt[-2].node;
	  directDeclarator->Declarator = yypvt[-1].node;
	  directDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directDeclarator;
	 } break;
case 71:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(3);
	  directDeclarator->directDeclarator = yypvt[-3].node;
	  directDeclarator->openSBr = yypvt[-2].node;
	  directDeclarator->constantExpression = yypvt[-1].node;
	  directDeclarator->closeSBr = yypvt[-0].node;
	  yyval.node = directDeclarator;
    } break;
case 72:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(4);
	  directDeclarator->directDeclarator = yypvt[-2].node;
	  directDeclarator->openSBr = yypvt[-1].node;
	  directDeclarator->closeSBr = yypvt[-0].node;
	  yyval.node = directDeclarator;
	} break;
case 73:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(5);
	  directDeclarator->directDeclarator = yypvt[-3].node;
	  directDeclarator->openRBr = yypvt[-2].node;
	  directDeclarator->parameterTypeList = yypvt[-1].node;
	  directDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directDeclarator;
	} break;
case 74:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(6);
	  directDeclarator->directDeclarator = yypvt[-3].node;
	  directDeclarator->openRBr = yypvt[-2].node;
	  directDeclarator->identifierList = yypvt[-1].list;
	  directDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directDeclarator;
	} break;
case 75:{
	  direct_declarator* directDeclarator;
	  directDeclarator = new direct_declarator;
	  directDeclarator->setNodeType(DIRECT_DECLARATOR);
	  directDeclarator->setDecompositionRule(7);
	  directDeclarator->directDeclarator = yypvt[-2].node;
	  directDeclarator->openRBr = yypvt[-1].node;
	  directDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directDeclarator;
	} break;
case 76:{
	  pointer* Pointer;
	  Pointer = new pointer;
	  Pointer->setNodeType(POINTER);
	  Pointer->setDecompositionRule(1);
	  Pointer->Asterisk = yypvt[-1].list;
	  Pointer->typeQualifierList = yypvt[-0].list;
	  yyval.node = Pointer;
	} break;
case 77:{
	  pointer* Pointer;
	  Pointer = new pointer;
	  Pointer->setNodeType(POINTER);
	  Pointer->setDecompositionRule(2);
	  Pointer->Asterisk = yypvt[-0].list;
	  yyval.node = Pointer;
	} break;
case 78:{
	  pointer* Pointer;
	  Pointer = new pointer;
	  Pointer->setNodeType(POINTER);
	  Pointer->setDecompositionRule(3);
	  Pointer->Asterisk = yypvt[-2].list;
	  Pointer->typeQualifierList = yypvt[-1].list;
	  Pointer->Pointer = yypvt[-0].node;
	  yyval.node = Pointer;
	} break;
case 79:{
	  pointer* Pointer;
	  Pointer = new pointer;
	  Pointer->setNodeType(POINTER);
	  Pointer->setDecompositionRule(4);
	  Pointer->Asterisk = yypvt[-1].list;
	  Pointer->Pointer = yypvt[-0].node;
	  yyval.node = Pointer;
	} break;
case 80:{
	  type_qualifier_list* typeQualifierList;
	  typeQualifierList = new type_qualifier_list;
	  typeQualifierList->setNodeType(TYPE_QUALIFIER_LIST);
	  typeQualifierList->addNodeLast(yypvt[-0].node);
	  yyval.node = typeQualifierList;
	} break;
case 81:{
	  yypvt[-1].list->addNodeLast(yypvt[-0].node);
	  yyval.list = yypvt[-1].list;
	} break;
case 82:{
	  parameter_type_list* parameterTypeList;
	  parameterTypeList = new parameter_type_list;
	  parameterTypeList->setNodeType(PARAMETER_TYPE_LIST);
	  parameterTypeList->setDecompositionRule(1);
	  parameterTypeList->parameterList = yypvt[-0].list;
	  yyval.node = parameterTypeList;
	} break;
case 83:{
	  parameter_type_list* parameterTypeList;
	  parameterTypeList = new parameter_type_list;
	  parameterTypeList->setNodeType(PARAMETER_TYPE_LIST);
	  parameterTypeList->setDecompositionRule(2);
	  parameterTypeList->parameterList = yypvt[-2].list;
	  parameterTypeList->Comma = yypvt[-1].list;
	  parameterTypeList->Dots = yypvt[-0].list;
	  yyval.node = parameterTypeList;
	} break;
case 84:{
	  parameter_list* parameterList;
	  parameterList = new parameter_list;
	  parameterList->setNodeType(PARAMETER_LIST);
    parameterList->setCommaSeparated();
	  parameterList->addNodeLast(yypvt[-0].node);
	  yyval.list = parameterList;
	} break;
case 85:{
	  yypvt[-2].list->addNodeLast(yypvt[-1].node);
	  yypvt[-2].list->addNodeLast(yypvt[-0].node);
	  yyval.list = yypvt[-2].list;
	} break;
case 86:{
	  parameter_declaration* parameterDeclaration;
	  parameterDeclaration = new parameter_declaration;
	  parameterDeclaration->setNodeType(PARAMETER_DECLARATION);
	  parameterDeclaration->setDecompositionRule(1);
	  parameterDeclaration->declarationSpecifiers = yypvt[-1].list;
	  parameterDeclaration->Declarator = yypvt[-0].node;
	  yyval.node = parameterDeclaration;
	} break;
case 87:{
	  parameter_declaration* parameterDeclaration;
	  parameterDeclaration = new parameter_declaration;
	  parameterDeclaration->setNodeType(PARAMETER_DECLARATION);
	  parameterDeclaration->setDecompositionRule(2);
	  parameterDeclaration->declarationSpecifiers = yypvt[-1].list;
	  parameterDeclaration->abstractDeclarator = yypvt[-0].node;
	  yyval.node = parameterDeclaration;
	} break;
case 88:{
	  parameter_declaration* parameterDeclaration;
	  parameterDeclaration = new parameter_declaration;
	  parameterDeclaration->setNodeType(PARAMETER_DECLARATION);
	  parameterDeclaration->setDecompositionRule(3);
	  parameterDeclaration->declarationSpecifiers = yypvt[-0].list;
	  yyval.node = parameterDeclaration;
	} break;
case 90:{
	    identifier_list* identifierList;
	    identifierList = new identifier_list;
	    identifierList->setNodeType(IDENTIFIER_LIST);

	    identifierList->setCommaSeparated();
	    identifierList->addNodeLast(yypvt[-0].node);
	    yyval.list = identifierList;
	  } break;
case 91:{
	    yypvt[-2].list->addNodeLast(yypvt[-1].node);
	    yypvt[-2].list->addNodeLast(yypvt[-0].node);
	    yyval.list = yypvt[-2].list;
	  } break;
case 93:{
	  initializer* Initializer;
	  Initializer = new initializer;
	  Initializer->setNodeType(INITIALIZER);
	  Initializer->setDecompositionRule(1);
	  Initializer->assignmentExpression = yypvt[-0].node;
	  yyval.node = Initializer;
	} break;
case 94:{
	  initializer* Initializer;
	  Initializer = new initializer;
	  Initializer->setNodeType(INITIALIZER);
	  Initializer->setDecompositionRule(2);
	  Initializer->openCBr = yypvt[-2].list;
	  Initializer->initializerList = yypvt[-1].list;
	  Initializer->closeCBr = yypvt[-0].list;
	  yyval.node = Initializer;
	} break;
case 95:{
	  initializer* Initializer;
	  Initializer = new initializer;
	  Initializer->setNodeType(INITIALIZER);
	  Initializer->setDecompositionRule(3);
	  Initializer->openCBr = yypvt[-3].list;
	  Initializer->initializerList = yypvt[-2].list;
	  Initializer->Comma = yypvt[-1].list;
	  Initializer->closeCBr = yypvt[-0].list;
	  yyval.node = Initializer;
	} break;
case 96:{
	  initializer_list* initializerList;
	  initializerList = new initializer_list;
	  initializerList->setNodeType(INITIALIZER_LIST);
    initializerList->setCommaSeparated();
	  initializerList->addNodeLast(yypvt[-0].node);
	  yyval.list = initializerList;
	} break;
case 97:{
	  yypvt[-2].list->addNodeLast(yypvt[-1].node);	  
	  yypvt[-2].list->addNodeLast(yypvt[-0].node);	  
	  yyval.list = yypvt[-2].list;
	} break;
case 99:{
	  type_name* typeName;
	  typeName = new type_name;
	  typeName->setNodeType(TYPE_NAME);
	  typeName->setDecompositionRule(1);
	  typeName->declarationSpecifiers = yypvt[-1].node;
	  typeName->abstractDeclarator = yypvt[-0].node;
	  yyval.node = typeName;
	} break;
case 100:{
	  type_name* typeName;
	  typeName = new type_name;
	  typeName->setNodeType(TYPE_NAME);
	  typeName->setDecompositionRule(2);
	  typeName->declarationSpecifiers = yypvt[-0].node;
	  yyval.node = typeName;
	} break;
case 101:{
	  abstract_declarator* abstractDeclarator;
	  abstractDeclarator = new abstract_declarator;
	  abstractDeclarator->setNodeType(ABSTRACT_DECLARATOR);
	  abstractDeclarator->setDecompositionRule(1);
	  abstractDeclarator->Pointer = yypvt[-0].node;
	  yyval.node = abstractDeclarator;
	} break;
case 102:{
	  abstract_declarator* abstractDeclarator;
	  abstractDeclarator = new abstract_declarator;
	  abstractDeclarator->setNodeType(ABSTRACT_DECLARATOR);
	  abstractDeclarator->setDecompositionRule(2);
	  abstractDeclarator->Pointer = yypvt[-1].node;
	  abstractDeclarator->directAbstractDeclarator = yypvt[-0].node;
	  yyval.node = abstractDeclarator;
	} break;
case 103:{
	  abstract_declarator* abstractDeclarator;
	  abstractDeclarator = new abstract_declarator;
	  abstractDeclarator->setNodeType(ABSTRACT_DECLARATOR);
	  abstractDeclarator->setDecompositionRule(3);
	  abstractDeclarator->directAbstractDeclarator = yypvt[-0].node;
	  yyval.node = abstractDeclarator;
	} break;
case 104:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(1);
    directAbstractDeclarator->openRBr = yypvt[-2].node;
    directAbstractDeclarator->abstractDeclarator = yypvt[-1].node;
    directAbstractDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 105:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(2);
    directAbstractDeclarator->directAbstractDeclarator = yypvt[-3].node;
    directAbstractDeclarator->openSBr = yypvt[-2].node;
    directAbstractDeclarator->constantExpression = yypvt[-1].node;
    directAbstractDeclarator->closeSBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 106:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(3);
    directAbstractDeclarator->directAbstractDeclarator = yypvt[-2].node;
    directAbstractDeclarator->openSBr = yypvt[-1].node;
    directAbstractDeclarator->closeSBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 107:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(4);
    directAbstractDeclarator->openSBr = yypvt[-2].node;
    directAbstractDeclarator->constantExpression = yypvt[-1].node;
    directAbstractDeclarator->closeSBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 108:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(5);
    directAbstractDeclarator->openSBr = yypvt[-1].node;
    directAbstractDeclarator->closeSBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 109:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(6);
    directAbstractDeclarator->directAbstractDeclarator = yypvt[-3].node;
    directAbstractDeclarator->openRBr = yypvt[-2].node;
    directAbstractDeclarator->parameterTypeList = yypvt[-1].node;
    directAbstractDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 110:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(7);
    directAbstractDeclarator->directAbstractDeclarator = yypvt[-2].node;
    directAbstractDeclarator->openRBr = yypvt[-1].node;
    directAbstractDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 111:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(8);
    directAbstractDeclarator->openRBr = yypvt[-2].node;
    directAbstractDeclarator->parameterTypeList = yypvt[-1].node;
    directAbstractDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 112:{
	  direct_abstract_declarator* directAbstractDeclarator;
	  directAbstractDeclarator = new direct_abstract_declarator;
	  directAbstractDeclarator->setNodeType(DIRECT_ABSTRACT_DECLARATOR);
	  directAbstractDeclarator->setDecompositionRule(9);
    directAbstractDeclarator->openRBr = yypvt[-1].node;
    directAbstractDeclarator->closeRBr = yypvt[-0].node;
	  yyval.node = directAbstractDeclarator;
	} break;
case 113:{
	  statement* Statement;
	  Statement = new statement;
	  Statement->setNodeType(STATEMENT);
	  Statement->setDecompositionRule(1);
	  Statement->labeledStatement = yypvt[-0].node;
	  yyval.node = Statement;
	} break;
case 114:{
	  statement* Statement;
	  Statement = new statement;
	  Statement->setNodeType(STATEMENT);
	  Statement->setDecompositionRule(2);
	  Statement->expressionStatement = yypvt[-0].node;
	  yyval.node = Statement;
	} break;
case 115:{
	  statement* Statement;
	  Statement = new statement;
	  Statement->setNodeType(STATEMENT);
	  Statement->setDecompositionRule(3);
	  Statement->compoundStatement = yypvt[-0].node;
	  yyval.node = Statement;
	} break;
case 116:{
	  statement* Statement;
	  Statement = new statement;
	  Statement->setNodeType(STATEMENT);
	  Statement->setDecompositionRule(4);
	  Statement->selectionStatement = yypvt[-0].node;
	  yyval.node = Statement;
	} break;
case 117:{
	  statement* Statement;
	  Statement = new statement;
	  Statement->setNodeType(STATEMENT);
	  Statement->setDecompositionRule(5);
	  Statement->iterationStatement = yypvt[-0].node;
	  yyval.node = Statement;
	} break;
case 118:{
	  statement* Statement;
	  Statement = new statement;
	  Statement->setNodeType(STATEMENT);
	  Statement->setDecompositionRule(6);
	  Statement->jumpStatement = yypvt[-0].node;
	  yyval.node = Statement;
	} break;
case 119:{ yyerrok; } break;
case 120:{
      labeled_statement* labeledStatement;
      labeledStatement = new labeled_statement;
      labeledStatement->setNodeType(LABELED_STATEMENT);
      labeledStatement->setDecompositionRule(1);
      labeledStatement->Identifier = yypvt[-2].node;
      labeledStatement->Colon = yypvt[-1].node;
      labeledStatement->Statement = yypvt[-0].node;
      yyval.node = labeledStatement;
    } break;
case 121:{
	    labeled_statement* labeledStatement;
	    labeledStatement = new labeled_statement;
	    labeledStatement->setNodeType(LABELED_STATEMENT);
	    labeledStatement->setDecompositionRule(2);
      labeledStatement->Keyword = yypvt[-3].node;
      labeledStatement->constantExpression = yypvt[-2].node;
      labeledStatement->Colon = yypvt[-1].node;
      labeledStatement->Statement = yypvt[-0].node;
	    yyval.node = labeledStatement;
	} break;
case 122:{
	    labeled_statement* labeledStatement;
	    labeledStatement = new labeled_statement;
	    labeledStatement->setNodeType(LABELED_STATEMENT);
	    labeledStatement->setDecompositionRule(3);
      labeledStatement->Keyword = yypvt[-2].node;
      labeledStatement->Colon = yypvt[-1].node;
      labeledStatement->Statement = yypvt[-0].node;
	    yyval.node = labeledStatement;
	} break;
case 123:{
      identifier* Identifier;
      Identifier = new identifier(strlen(yypvt[-0].s));
      Identifier->setNodeType(IDENT);
      strcpy(Identifier->stringRepresentation, yypvt[-0].s);
      Identifier->storeIgnored();
      yyval.node = Identifier;
    } break;
case 124:{
	  expression_statement* expressionStatement;
	  expressionStatement = new expression_statement;
	  expressionStatement->setNodeType(EXPRESSION_STATEMENT);
	  expressionStatement->setDecompositionRule(1);
    expressionStatement->Expression = yypvt[-1].node;
    expressionStatement->Semicolon = yypvt[-0].node;
	  yyval.node = expressionStatement;
	} break;
case 125:{
	  expression_statement* expressionStatement;
	  expressionStatement = new expression_statement;
	  expressionStatement->setNodeType(EXPRESSION_STATEMENT);
	  expressionStatement->setDecompositionRule(2);
    expressionStatement->Semicolon = yypvt[-0].node;
	  yyval.node = expressionStatement;
	} break;
case 126:{
	  compound_statement* compoundStatement;
	  compoundStatement = new compound_statement;
	  compoundStatement->setNodeType(COMPOUND_STATEMENT);
	  compoundStatement->setDecompositionRule(1);
	  compoundStatement->openCBr = yypvt[-3].list;
	  compoundStatement->declarationList = yypvt[-2].list;
	  compoundStatement->statementList = yypvt[-1].list;
	  compoundStatement->closeCBr = yypvt[-0].list;
	  yyval.node = compoundStatement;
	} break;
case 127:{
	  compound_statement* compoundStatement;
	  compoundStatement = new compound_statement;
	  compoundStatement->setNodeType(COMPOUND_STATEMENT);
	  compoundStatement->setDecompositionRule(2);
	  compoundStatement->openCBr = yypvt[-2].list;
	  compoundStatement->declarationList = yypvt[-1].list;
	  compoundStatement->closeCBr = yypvt[-0].list;
	  yyval.node = compoundStatement;
	} break;
case 128:{
	  compound_statement* compoundStatement;
	  compoundStatement = new compound_statement;
	  compoundStatement->setNodeType(COMPOUND_STATEMENT);
	  compoundStatement->setDecompositionRule(3);
	  compoundStatement->openCBr = yypvt[-2].list;
	  compoundStatement->statementList = yypvt[-1].list;
	  compoundStatement->closeCBr = yypvt[-0].list;
	  yyval.node = compoundStatement;
	} break;
case 129:{
	  compound_statement* compoundStatement;
	  compoundStatement = new compound_statement;
	  compoundStatement->setNodeType(COMPOUND_STATEMENT);
	  compoundStatement->setDecompositionRule(4);
	  compoundStatement->openCBr = yypvt[-1].list;
	  compoundStatement->closeCBr = yypvt[-0].list;
	  yyval.node = compoundStatement;
	} break;
case 130:{
	  statement_list* statementList;
	  statementList = new statement_list;
	  statementList->setNodeType(STATEMENT_LIST);
    statementList->setNewlineSeparated();
	  statementList->addNodeLast(yypvt[-0].node);
	  yyval.list = statementList;
	} break;
case 131:{
	  yypvt[-1].list->addNodeLast(yypvt[-0].node);
	  yyval.list = yypvt[-1].list;
	} break;
case 132:{
	  selection_statement* selectionStatement;
	  selectionStatement = new selection_statement;
	  selectionStatement->setNodeType(SELECTION_STATEMENT);
	  selectionStatement->setDecompositionRule(1);
    selectionStatement->keywordIf = yypvt[-4].node;
    selectionStatement->openRBr = yypvt[-3].node;
    selectionStatement->Expression = yypvt[-2].node;
    selectionStatement->closeRBr = yypvt[-1].node;
    selectionStatement->Statement = yypvt[-0].node;
    yyval.node = selectionStatement;

	} break;
case 133:{
	  selection_statement* selectionStatement;
	  selectionStatement = new selection_statement;
	  selectionStatement->setNodeType(SELECTION_STATEMENT);
	  selectionStatement->setDecompositionRule(2);
    selectionStatement->keywordIf = yypvt[-6].node;
    selectionStatement->openRBr = yypvt[-5].node;
    selectionStatement->Expression = yypvt[-4].node;
    selectionStatement->closeRBr = yypvt[-3].node;
    selectionStatement->Statement = yypvt[-2].node;
    selectionStatement->keywordElse = yypvt[-1].node;
    selectionStatement->elseStatement = yypvt[-0].node;
	  yyval.node = selectionStatement;
	} break;
case 134:{
	  selection_statement* selectionStatement;
	  selectionStatement = new selection_statement;
	  selectionStatement->setNodeType(SELECTION_STATEMENT);
	  selectionStatement->setDecompositionRule(3);
    selectionStatement->keywordIf = yypvt[-4].node;
    selectionStatement->openRBr = yypvt[-3].node;
    selectionStatement->Expression = yypvt[-2].node;
    selectionStatement->closeRBr = yypvt[-1].node;
    selectionStatement->Statement = yypvt[-0].node;
	  yyval.node = selectionStatement;
	} break;
case 135:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(1);
    iterationStatement->Keyword1 = yypvt[-4].node;
    iterationStatement->openRBr = yypvt[-3].node;
    iterationStatement->Expression = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 136:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(2);
    iterationStatement->Keyword1 = yypvt[-6].node;
    iterationStatement->Statement = yypvt[-5].node;
    iterationStatement->Keyword2 = yypvt[-4].node;
    iterationStatement->openRBr = yypvt[-3].node;
    iterationStatement->Expression = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Semicolon1 = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 137:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(3);
    iterationStatement->Keyword1 = yypvt[-8].node;
    iterationStatement->openRBr = yypvt[-7].node;
    iterationStatement->initExpression = yypvt[-6].node;
    iterationStatement->Semicolon1 = yypvt[-5].node;
    iterationStatement->Expression = yypvt[-4].node;
    iterationStatement->Semicolon2 = yypvt[-3].node;
    iterationStatement->iterExpression = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 138:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(4);
    iterationStatement->Keyword1 = yypvt[-7].node;
    iterationStatement->openRBr = yypvt[-6].node;
    iterationStatement->initExpression = yypvt[-5].node;
    iterationStatement->Semicolon1 = yypvt[-4].node;
    iterationStatement->Expression = yypvt[-3].node;
    iterationStatement->Semicolon2 = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 139:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(5);
    iterationStatement->Keyword1 = yypvt[-7].node;
    iterationStatement->openRBr = yypvt[-6].node;
    iterationStatement->initExpression = yypvt[-5].node;
    iterationStatement->Semicolon1 = yypvt[-4].node;
    iterationStatement->Semicolon2 = yypvt[-3].node;
    iterationStatement->iterExpression = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 140:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(6);
    iterationStatement->Keyword1 = yypvt[-6].node;
    iterationStatement->openRBr = yypvt[-5].node;
    iterationStatement->initExpression = yypvt[-4].node;
    iterationStatement->Semicolon1 = yypvt[-3].node;
    iterationStatement->Semicolon2 = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 141:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(7);
    iterationStatement->Keyword1 = yypvt[-7].node;
    iterationStatement->openRBr = yypvt[-6].node;
    iterationStatement->Semicolon1 = yypvt[-5].node;
    iterationStatement->Expression = yypvt[-4].node;
    iterationStatement->Semicolon2 = yypvt[-3].node;
    iterationStatement->iterExpression = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 142:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(8);
    iterationStatement->Keyword1 = yypvt[-6].node;
    iterationStatement->openRBr = yypvt[-5].node;
    iterationStatement->Semicolon1 = yypvt[-4].node;
    iterationStatement->Expression = yypvt[-3].node;
    iterationStatement->Semicolon2 = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 143:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(9);
    iterationStatement->Keyword1 = yypvt[-6].node;
    iterationStatement->openRBr = yypvt[-5].node;
    iterationStatement->Semicolon1 = yypvt[-4].node;
    iterationStatement->Semicolon2 = yypvt[-3].node;
    iterationStatement->iterExpression = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 144:{
	  iteration_statement* iterationStatement;
	  iterationStatement = new iteration_statement;
	  iterationStatement->setNodeType(ITERATION_STATEMENT);
	  iterationStatement->setDecompositionRule(10);
    iterationStatement->Keyword1 = yypvt[-5].node;
    iterationStatement->openRBr = yypvt[-4].node;
    iterationStatement->Semicolon1 = yypvt[-3].node;
    iterationStatement->Semicolon2 = yypvt[-2].node;
    iterationStatement->closeRBr = yypvt[-1].node;
    iterationStatement->Statement = yypvt[-0].node;
	  yyval.node = iterationStatement;
	} break;
case 146:{
	  jump_statement* jumpStatement;
	  jumpStatement = new jump_statement;
	  jumpStatement->setNodeType(JUMP_STATEMENT);
	  jumpStatement->setDecompositionRule(1);
    jumpStatement->Keyword = yypvt[-2].node;
    jumpStatement->Identifier = yypvt[-1].node;
    jumpStatement->Semicolon = yypvt[-0].node;
	  yyval.node = jumpStatement;
	} break;
case 147:{
	  jump_statement* jumpStatement;
	  jumpStatement = new jump_statement;
	  jumpStatement->setNodeType(JUMP_STATEMENT);
	  jumpStatement->setDecompositionRule(2);
    jumpStatement->Keyword = yypvt[-1].node;
    jumpStatement->Semicolon = yypvt[-0].node;
	  yyval.node = jumpStatement;
	} break;
case 148:{
	  jump_statement* jumpStatement;
	  jumpStatement = new jump_statement;
	  jumpStatement->setNodeType(JUMP_STATEMENT);
	  jumpStatement->setDecompositionRule(3);
    jumpStatement->Keyword = yypvt[-1].node;
    jumpStatement->Semicolon = yypvt[-0].node;
	  yyval.node = jumpStatement;
	} break;
case 149:{
	  jump_statement* jumpStatement;
	  jumpStatement = new jump_statement;
	  jumpStatement->setNodeType(JUMP_STATEMENT);
	  jumpStatement->setDecompositionRule(4);
    jumpStatement->Keyword = yypvt[-2].node;
    jumpStatement->Expression = yypvt[-1].node;
    jumpStatement->Semicolon = yypvt[-0].node;
    yyval.node = jumpStatement;
	} break;
case 150:{
	  jump_statement* jumpStatement;
	  jumpStatement = new jump_statement;
	  jumpStatement->setNodeType(JUMP_STATEMENT);
	  jumpStatement->setDecompositionRule(5);
    jumpStatement->Keyword = yypvt[-1].node;
    jumpStatement->Semicolon = yypvt[-0].node;
	  yyval.node = jumpStatement;
	} break;
case 151:{
      expression* Expression;
      Expression = new expression;
      Expression->setNodeType(EXPRESSION);
      Expression->setDecompositionRule(1);
      Expression->assignmentExpression = yypvt[-0].node;
      yyval.node = Expression;
    } break;
case 152:{
      expression* Expression;
      Expression = new expression;
      Expression->setNodeType(EXPRESSION);
      Expression->setDecompositionRule(2);
      Expression->Expression = yypvt[-2].node;
      Expression->Comma = yypvt[-1].node;
      Expression->assignmentExpression = yypvt[-0].node;
      yyval.node = Expression;
    } break;
case 154:{
	  assignment_expression* assignmentExpression;
	  assignmentExpression = new assignment_expression;
	  assignmentExpression->setNodeType(ASSIGNMENT_EXPRESSION);
	  assignmentExpression->setDecompositionRule(1);
    assignmentExpression->conditionalExpression = yypvt[-0].node;
	  yyval.node = assignmentExpression;
	} break;
case 155:{
	  assignment_expression* assignmentExpression;
	  assignmentExpression = new assignment_expression;
	  assignmentExpression->setNodeType(ASSIGNMENT_EXPRESSION);
	  assignmentExpression->setDecompositionRule(2);
    assignmentExpression->unaryExpression = yypvt[-2].node;
    assignmentExpression->assignmentOperator = yypvt[-1].node;
    assignmentExpression->assignmentExpression = yypvt[-0].node;
	  yyval.node = assignmentExpression;
	} break;
case 156:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(1);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 157:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(2);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 158:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(3);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 159:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(4);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 160:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(5);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 161:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(6);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 162:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(7);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 163:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(8);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 164:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(9);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 165:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(10);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 166:{
      assignment_operator* assignmentOperator;
      assignmentOperator = new assignment_operator;
      assignmentOperator->setNodeType(ASSIGNMENT_OPERATOR);
      assignmentOperator->setDecompositionRule(11);
      assignmentOperator->storeIgnored();
      yyval.node = assignmentOperator;
    } break;
case 167:{
      conditional_expression* conditionalExpression;
      conditionalExpression = new conditional_expression;
      conditionalExpression->setNodeType(CONDITIONAL_EXPRESSION);
      conditionalExpression->setDecompositionRule(1);
      conditionalExpression->logicalOrExpression = yypvt[-0].node;
      yyval.node = conditionalExpression;
    } break;
case 168:{
      conditional_expression* conditionalExpression;
      conditionalExpression = new conditional_expression;
      conditionalExpression->setNodeType(CONDITIONAL_EXPRESSION);
      conditionalExpression->setDecompositionRule(2);
      conditionalExpression->logicalOrExpression = yypvt[-4].node;
      conditionalExpression->Ask = yypvt[-3].node;
      conditionalExpression->Expression = yypvt[-2].node;
      conditionalExpression->Colon = yypvt[-1].node;
      conditionalExpression->conditionalExpression = yypvt[-0].node;
      yyval.node = conditionalExpression;
    } break;
case 169:{
	  constant_expression* constantExpression;
	  constantExpression = new constant_expression;
	  constantExpression->setNodeType(CONSTANT_EXPRESSION);
	  constantExpression->setDecompositionRule(1); // =)
    constantExpression->conditionalExpression = yypvt[-0].node;
	  yyval.node = constantExpression;
	} break;
case 170:{
      logical_or_expression* logicalOrExpression;
      logicalOrExpression = new logical_or_expression;
      logicalOrExpression->setNodeType(LOGICAL_OR_EXPRESSION);
      logicalOrExpression->setDecompositionRule(1);
      logicalOrExpression->logicalAndExpression = yypvt[-0].node;
      yyval.node = logicalOrExpression;
    } break;
case 171:{
      logical_or_expression* logicalOrExpression;
      logicalOrExpression = new logical_or_expression;
      logicalOrExpression->setNodeType(LOGICAL_OR_EXPRESSION);
      logicalOrExpression->setDecompositionRule(2);
      logicalOrExpression->logicalOrExpression = yypvt[-2].node;
      logicalOrExpression->Operator = yypvt[-1].node;
      logicalOrExpression->logicalAndExpression = yypvt[-0].node;
      yyval.node = logicalOrExpression;
    } break;
case 172:{
      logical_and_expression* logicalAndExpression;
      logicalAndExpression = new logical_and_expression;
      logicalAndExpression->setNodeType(LOGICAL_AND_EXPRESSION);
      logicalAndExpression->setDecompositionRule(1);
      logicalAndExpression->inclusiveOrExpression = yypvt[-0].node;
      yyval.node = logicalAndExpression;
    } break;
case 173:{
      logical_and_expression* logicalAndExpression;
      logicalAndExpression = new logical_and_expression;
      logicalAndExpression->setNodeType(LOGICAL_AND_EXPRESSION);
      logicalAndExpression->setDecompositionRule(2);
      logicalAndExpression->logicalAndExpression = yypvt[-2].node;
      logicalAndExpression->Operator = yypvt[-1].node;
      logicalAndExpression->inclusiveOrExpression = yypvt[-0].node;
      yyval.node = logicalAndExpression;
    } break;
case 174:{
      inclusive_or_expression* inclusiveOrExpression;
      inclusiveOrExpression = new inclusive_or_expression;
      inclusiveOrExpression->setNodeType(INCLUSIVE_OR_EXPRESSION);
      inclusiveOrExpression->setDecompositionRule(1);
      inclusiveOrExpression->exclusiveOrExpression = yypvt[-0].node;
      yyval.node = inclusiveOrExpression;
    } break;
case 175:{
      inclusive_or_expression* inclusiveOrExpression;
      inclusiveOrExpression = new inclusive_or_expression;
      inclusiveOrExpression->setNodeType(INCLUSIVE_OR_EXPRESSION);
      inclusiveOrExpression->setDecompositionRule(2);
      inclusiveOrExpression->inclusiveOrExpression = yypvt[-2].node;
      inclusiveOrExpression->Operator = yypvt[-1].node;
      inclusiveOrExpression->exclusiveOrExpression = yypvt[-0].node;
      yyval.node = inclusiveOrExpression;
    } break;
case 176:{
      exclusive_or_expression* exclusiveOrExpression;
      exclusiveOrExpression = new exclusive_or_expression;
      exclusiveOrExpression->setNodeType(EXCLUSIVE_OR_EXPRESSION);
      exclusiveOrExpression->setDecompositionRule(1);
      exclusiveOrExpression->andExpression = yypvt[-0].node;
      yyval.node = exclusiveOrExpression;
    } break;
case 177:{
      exclusive_or_expression* exclusiveOrExpression;
      exclusiveOrExpression = new exclusive_or_expression;
      exclusiveOrExpression->setNodeType(EXCLUSIVE_OR_EXPRESSION);
      exclusiveOrExpression->setDecompositionRule(2);
      exclusiveOrExpression->exclusiveOrExpression = yypvt[-2].node;
      exclusiveOrExpression->Operator = yypvt[-1].node;
      exclusiveOrExpression->andExpression = yypvt[-0].node;
      yyval.node = exclusiveOrExpression;
    } break;
case 178:{
      and_expression* andExpression;
      andExpression = new and_expression;
      andExpression->setNodeType(AND_EXPRESSION);
      andExpression->setDecompositionRule(1);
      andExpression->equalityExpression = yypvt[-0].node;
      yyval.node = andExpression;
    } break;
case 179:{
      and_expression* andExpression;
      andExpression = new and_expression;
      andExpression->setNodeType(AND_EXPRESSION);
      andExpression->setDecompositionRule(2);
      andExpression->andExpression = yypvt[-2].node;
      andExpression->Operator = yypvt[-1].node;
      andExpression->equalityExpression = yypvt[-0].node;
      yyval.node = andExpression;
    } break;
case 180:{
      equality_expression* equalityExpression;
      equalityExpression = new equality_expression;
      equalityExpression->setNodeType(EQUALITY_EXPRESSION);
      equalityExpression->setDecompositionRule(1);
      equalityExpression->relationalExpression = yypvt[-0].node;
      yyval.node = equalityExpression;
    } break;
case 181:{
      equality_expression* equalityExpression;
      equalityExpression = new equality_expression;
      equalityExpression->setNodeType(EQUALITY_EXPRESSION);
      equalityExpression->setDecompositionRule(2);
      equalityExpression->equalityExpression = yypvt[-2].node;
      equalityExpression->Operator = yypvt[-1].node;
      equalityExpression->relationalExpression = yypvt[-0].node;
      yyval.node = equalityExpression;
    } break;
case 182:{
      equality_expression* equalityExpression;
      equalityExpression = new equality_expression;
      equalityExpression->setNodeType(EQUALITY_EXPRESSION);
      equalityExpression->setDecompositionRule(3);
      equalityExpression->equalityExpression = yypvt[-2].node;
      equalityExpression->Operator = yypvt[-1].node;
      equalityExpression->relationalExpression = yypvt[-0].node;
      yyval.node = equalityExpression;
    } break;
case 183:{
      relational_expression* relationalExpression;
      relationalExpression = new relational_expression;
      relationalExpression->setNodeType(RELATIONAL_EXPRESSION);
      relationalExpression->setDecompositionRule(1);
      relationalExpression->shiftExpression = yypvt[-0].node;
      yyval.node = relationalExpression;
    } break;
case 184:{
      relational_expression* relationalExpression;
      relationalExpression = new relational_expression;
      relationalExpression->setNodeType(RELATIONAL_EXPRESSION);
      relationalExpression->setDecompositionRule(2);
	    relationalExpression->relationalExpression = yypvt[-2].node;
      relationalExpression->Operator = yypvt[-1].node;
	    relationalExpression->shiftExpression = yypvt[-0].node;
      yyval.node = relationalExpression;
    } break;
case 185:{
      relational_expression* relationalExpression;
      relationalExpression = new relational_expression;
      relationalExpression->setNodeType(RELATIONAL_EXPRESSION);
      relationalExpression->setDecompositionRule(3);
      relationalExpression->relationalExpression = yypvt[-2].node;
      relationalExpression->Operator = yypvt[-1].node;
      relationalExpression->shiftExpression = yypvt[-0].node;
      yyval.node = relationalExpression;
    } break;
case 186:{
      relational_expression* relationalExpression;
      relationalExpression = new relational_expression;
      relationalExpression->setNodeType(RELATIONAL_EXPRESSION);
      relationalExpression->setDecompositionRule(4);
      relationalExpression->relationalExpression = yypvt[-2].node;
      relationalExpression->Operator = yypvt[-1].node;
      relationalExpression->shiftExpression = yypvt[-0].node;
      yyval.node = relationalExpression;
    } break;
case 187:{
      relational_expression* relationalExpression;
      relationalExpression = new relational_expression;
      relationalExpression->setNodeType(RELATIONAL_EXPRESSION);
      relationalExpression->setDecompositionRule(5);
      relationalExpression->relationalExpression = yypvt[-2].node;
      relationalExpression->Operator = yypvt[-1].node;
      relationalExpression->shiftExpression = yypvt[-0].node;
      yyval.node = relationalExpression;
    } break;
case 188:{
	    shift_expression* shiftExpression;
	    shiftExpression = new shift_expression;
	    shiftExpression->setNodeType(SHIFT_EXPRESSION);
	    shiftExpression->setDecompositionRule(1);
	    shiftExpression->additiveExpression = yypvt[-0].node;
	  yyval.node = shiftExpression;
	} break;
case 189:{
	    shift_expression* shiftExpression;
	    shiftExpression = new shift_expression;
	    shiftExpression->setNodeType(SHIFT_EXPRESSION);
	    shiftExpression->setDecompositionRule(2);
	    shiftExpression->shiftExpression = yypvt[-2].node;
      shiftExpression->Operator = yypvt[-1].node;
	    shiftExpression->additiveExpression = yypvt[-0].node;
	  yyval.node = shiftExpression;
	} break;
case 190:{
	    shift_expression* shiftExpression;
	    shiftExpression = new shift_expression;
	    shiftExpression->setNodeType(SHIFT_EXPRESSION);
	    shiftExpression->setDecompositionRule(3);
	    shiftExpression->shiftExpression = yypvt[-2].node;
      shiftExpression->Operator = yypvt[-1].node;
	    shiftExpression->additiveExpression = yypvt[-0].node;
	    yyval.node = shiftExpression;
	} break;
case 191:{
	    additive_expression* additiveExpression;
	    additiveExpression = new additive_expression;
	    additiveExpression->setNodeType(ADDITIVE_EXPRESSION);
	    additiveExpression->setDecompositionRule(1);
	    additiveExpression->multiplicativeExpression = yypvt[-0].node;
	    yyval.node = additiveExpression;
	  } break;
case 192:{
	    additive_expression* additiveExpression;
	    additiveExpression = new additive_expression;
	    additiveExpression->setNodeType(ADDITIVE_EXPRESSION);
	    additiveExpression->setDecompositionRule(2);
	    additiveExpression->additiveExpression = yypvt[-2].node;
      additiveExpression->Operator = yypvt[-1].node;
	    additiveExpression->multiplicativeExpression = yypvt[-0].node;
	    yyval.node = additiveExpression;
	  } break;
case 193:{
	    additive_expression* additiveExpression;
	    additiveExpression = new additive_expression;
	    additiveExpression->setNodeType(ADDITIVE_EXPRESSION);
	    additiveExpression->setDecompositionRule(3);
	    additiveExpression->additiveExpression = yypvt[-2].node;
      additiveExpression->Operator = yypvt[-1].node;
	    additiveExpression->multiplicativeExpression = yypvt[-0].node;
	    yyval.node = additiveExpression;
	  } break;
case 194:{
	    multiplicative_expression* multiplicativeExpression;
	    multiplicativeExpression = new multiplicative_expression;
	    multiplicativeExpression->setNodeType(MULTIPLICATIVE_EXPRESSION);
	    multiplicativeExpression->setDecompositionRule(1);
	    multiplicativeExpression->castExpression = yypvt[-0].node;
	    yyval.node = multiplicativeExpression;
	  } break;
case 195:{
	    multiplicative_expression* multiplicativeExpression;
	    multiplicativeExpression = new multiplicative_expression;
	    multiplicativeExpression->setNodeType(MULTIPLICATIVE_EXPRESSION);
	    multiplicativeExpression->setDecompositionRule(2);
	    multiplicativeExpression->multiplicativeExpression = yypvt[-2].node;
      multiplicativeExpression->Operator = yypvt[-1].node;
	    multiplicativeExpression->castExpression = yypvt[-0].node;
	    yyval.node = multiplicativeExpression;
	  } break;
case 196:{
	    multiplicative_expression* multiplicativeExpression;
	    multiplicativeExpression = new multiplicative_expression;
	    multiplicativeExpression->setNodeType(MULTIPLICATIVE_EXPRESSION);
	    multiplicativeExpression->setDecompositionRule(3);
	    multiplicativeExpression->multiplicativeExpression = yypvt[-2].node;
      multiplicativeExpression->Operator = yypvt[-1].node;
	    multiplicativeExpression->castExpression = yypvt[-0].node;
	    yyval.node = multiplicativeExpression;
	  } break;
case 197:{
	    multiplicative_expression* multiplicativeExpression;
	    multiplicativeExpression = new multiplicative_expression;
	    multiplicativeExpression->setNodeType(MULTIPLICATIVE_EXPRESSION);
	    multiplicativeExpression->setDecompositionRule(4);
	    multiplicativeExpression->multiplicativeExpression = yypvt[-2].node;
      multiplicativeExpression->Operator = yypvt[-1].node;
	    multiplicativeExpression->castExpression = yypvt[-0].node;
	    yyval.node = multiplicativeExpression;
	  } break;
case 198:{
	    cast_expression* castExpression;
	    castExpression = new cast_expression;
	    castExpression->setNodeType(CAST_EXPRESSION);
	    castExpression->setDecompositionRule(1);
	    castExpression->unaryExpression = yypvt[-0].node;
	    yyval.node = castExpression;
	  } break;
case 199:{
	    cast_expression* castExpression;
	    castExpression = new cast_expression;
	    castExpression->setNodeType(CAST_EXPRESSION);
	    castExpression->setDecompositionRule(1);
	    castExpression->openRBr = yypvt[-3].node;
	    castExpression->typeName = yypvt[-2].node;
	    castExpression->closeRBr = yypvt[-1].node;
	    castExpression->castExpression = yypvt[-0].node;
	    yyval.node = castExpression;
	  } break;
case 200:{
      unary_expression* unaryExpression;
      unaryExpression = new unary_expression;
      unaryExpression->setNodeType(UNARY_EXPRESSION);
      unaryExpression->setDecompositionRule(1);
      unaryExpression->postfixExpression = yypvt[-0].node;
      yyval.node = unaryExpression;
    } break;
case 201:{
      unary_expression* unaryExpression;
      unaryExpression = new unary_expression;
      unaryExpression->setNodeType(UNARY_EXPRESSION);
      unaryExpression->setDecompositionRule(2);
      unaryExpression->Operator = yypvt[-1].node;
      unaryExpression->unaryExpression = yypvt[-0].node;
      yyval.node = unaryExpression;
    } break;
case 202:{
      unary_expression* unaryExpression;
      unaryExpression = new unary_expression;
      unaryExpression->setNodeType(UNARY_EXPRESSION);
      unaryExpression->setDecompositionRule(3);
      unaryExpression->Operator = yypvt[-1].node;
      unaryExpression->unaryExpression = yypvt[-0].node;
      yyval.node = unaryExpression;
    } break;
case 203:{
      unary_expression* unaryExpression;
      unaryExpression = new unary_expression;
      unaryExpression->setNodeType(UNARY_EXPRESSION);
      unaryExpression->setDecompositionRule(4);
      unaryExpression->unaryOperator = yypvt[-1].node;
      unaryExpression->castExpression = yypvt[-0].node;
      yyval.node = unaryExpression;
    } break;
case 204:{
      unary_expression* unaryExpression;
      unaryExpression = new unary_expression;
      unaryExpression->setNodeType(UNARY_EXPRESSION);
      unaryExpression->setDecompositionRule(5);
      unaryExpression->Keyword = yypvt[-1].node;
      unaryExpression->unaryExpression = yypvt[-0].node;
      yyval.node = unaryExpression;
    } break;
case 205:{
      unary_expression* unaryExpression;
      unaryExpression = new unary_expression;
      unaryExpression->setNodeType(UNARY_EXPRESSION);
      unaryExpression->setDecompositionRule(6);
      unaryExpression->Keyword = yypvt[-3].node;
      unaryExpression->openRBr = yypvt[-2].node;
      unaryExpression->typeName = yypvt[-1].node;
      unaryExpression->closeRBr = yypvt[-2].node;
      yyval.node = unaryExpression;
    } break;
case 206:{
	  unary_operator* unaryOperator;
	  unaryOperator = new unary_operator;
	  unaryOperator->setNodeType(UNARY_OPERATOR);
	  unaryOperator->setDecompositionRule(1);
    unaryOperator->storeIgnored();
	  yyval.node = unaryOperator;
	} break;
case 207:{
	  unary_operator* unaryOperator;
	  unaryOperator = new unary_operator;
	  unaryOperator->setNodeType(UNARY_OPERATOR);
	  unaryOperator->setDecompositionRule(2);
    unaryOperator->storeIgnored();
	  yyval.node = unaryOperator;
	} break;
case 208:{
	  unary_operator* unaryOperator;
	  unaryOperator = new unary_operator;
	  unaryOperator->setNodeType(UNARY_OPERATOR);
	  unaryOperator->setDecompositionRule(3);
    unaryOperator->storeIgnored();
	  yyval.node = unaryOperator;
	} break;
case 209:{
	  unary_operator* unaryOperator;
	  unaryOperator = new unary_operator;
	  unaryOperator->setNodeType(UNARY_OPERATOR);
	  unaryOperator->setDecompositionRule(4);
    unaryOperator->storeIgnored();
	  yyval.node = unaryOperator;
	} break;
case 210:{
	  unary_operator* unaryOperator;
	  unaryOperator = new unary_operator;
	  unaryOperator->setNodeType(UNARY_OPERATOR);
	  unaryOperator->setDecompositionRule(5);
    unaryOperator->storeIgnored();
	  yyval.node = unaryOperator;
	} break;
case 211:{
	  unary_operator* unaryOperator;
	  unaryOperator = new unary_operator;
	  unaryOperator->setNodeType(UNARY_OPERATOR);
	  unaryOperator->setDecompositionRule(6);
    unaryOperator->storeIgnored();
	  yyval.node = unaryOperator;
	} break;
case 212:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(1);
	  postfixExpression->primaryExpression = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 213:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(2);
	  postfixExpression->postfixExpression = yypvt[-3].node;
	  postfixExpression->openSBr = yypvt[-2].node;
	  postfixExpression->Expression = yypvt[-1].node;
	  postfixExpression->closeSBr = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 214:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(3);
	  postfixExpression->postfixExpression = yypvt[-3].node;
	  postfixExpression->openRBr = yypvt[-2].node;
	  postfixExpression->argumentExpressionList = yypvt[-1].node;
	  postfixExpression->closeRBr = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 215:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(4);
	  postfixExpression->postfixExpression = yypvt[-2].node;
	  postfixExpression->openRBr = yypvt[-1].node;
	  postfixExpression->closeRBr = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 216:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(5);
	  postfixExpression->postfixExpression = yypvt[-2].node;
	  postfixExpression->Operator = yypvt[-1].node;
	  postfixExpression->Identifier = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 217:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(6);
	  postfixExpression->postfixExpression = yypvt[-2].node;
	  postfixExpression->Operator = yypvt[-1].node;
	  postfixExpression->Identifier = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 218:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(7);
	  postfixExpression->postfixExpression = yypvt[-1].node;
	  postfixExpression->Operator = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 219:{
	  postfix_expression* postfixExpression;
	  postfixExpression = new postfix_expression;
	  postfixExpression->setNodeType(POSTFIX_EXPRESSION);
	  postfixExpression->setDecompositionRule(8);
	  postfixExpression->postfixExpression = yypvt[-1].node;
	  postfixExpression->Operator = yypvt[-0].node;
	  yyval.node = postfixExpression;
	} break;
case 220:{
	  primary_expression* primaryExpression;
	  primaryExpression = new primary_expression;
	  primaryExpression->setNodeType(PRIMARY_EXPRESSION);
	  primaryExpression->setDecompositionRule(1);
    primaryExpression->Identifier = yypvt[-0].node;
	  yyval.node = primaryExpression;
	} break;
case 221:{
	  primary_expression* primaryExpression;
	  primaryExpression = new primary_expression;
	  primaryExpression->setNodeType(PRIMARY_EXPRESSION);
	  primaryExpression->setDecompositionRule(2);
    primaryExpression->Constant = yypvt[-0].node;
	  yyval.node = primaryExpression;
	} break;
case 222:{
	  primary_expression* primaryExpression;
	  primaryExpression = new primary_expression;
	  primaryExpression->setNodeType(PRIMARY_EXPRESSION);
	  primaryExpression->setDecompositionRule(3);
    primaryExpression->String = yypvt[-0].node;
	  yyval.node = primaryExpression;
	} break;
case 223:{
	  primary_expression* primaryExpression;
	  primaryExpression = new primary_expression;
	  primaryExpression->setNodeType(PRIMARY_EXPRESSION);
	  primaryExpression->setDecompositionRule(4);
    primaryExpression->openRBr = yypvt[-2].node;
    primaryExpression->Expression = yypvt[-1].node;
    primaryExpression->closeRBr = yypvt[-2].node;
	  yyval.node = primaryExpression;
	} break;
case 224:{
      string* String;
      String = new string(strlen(yypvt[-0].s));
      String->setNodeType(STRNG);
      strcpy(String->stringRepresentation, yypvt[-0].s);
      String->storeIgnored();
      yyval.node = String;
    } break;
case 225:{
      argument_expression_list* argumentExpressionList;
      argumentExpressionList = new argument_expression_list;
      argumentExpressionList->setNodeType(ARGUMENT_EXPRESSION_LIST);
      argumentExpressionList->setCommaSeparated();
      argumentExpressionList->addNodeLast(yypvt[-0].node);
      yyval.list = argumentExpressionList;
    } break;
case 226:{
      yypvt[-2].list->addNodeLast(yypvt[-1].node);
      yypvt[-2].list->addNodeLast(yypvt[-0].node);
      yyval.list = yypvt[-2].list;
    } break;
case 227:{
      constant* Constant;
      Constant = new constant;
      Constant->setNodeType(CONSTANT);
      Constant->setDecompositionRule(1);
      integer_constant* integerConstant;
      integerConstant = new integer_constant(strlen(tokval));
      integerConstant->setNodeType(INTEGER_CONST);
      integerConstant->intValue = yypvt[-0].i;
      strcpy(integerConstant->stringRepresentation, tokval);
      integerConstant->storeIgnored();
      Constant->integerConstant = integerConstant;
      yyval.node = Constant;
    } break;
case 228:{
      constant* Constant;
      Constant = new constant;
      Constant->setNodeType(CONSTANT);
      Constant->setDecompositionRule(2);
      character_constant* characterConstant;
      characterConstant = new character_constant(strlen(yypvt[-0].s));
      characterConstant->setNodeType(CHARACTER_CONST);
      strcpy(characterConstant->stringRepresentation, yypvt[-0].s);
      characterConstant->storeIgnored();
      Constant->characterConstant = characterConstant;
      yyval.node = Constant;
    } break;
case 229:{
      constant* Constant;
      Constant = new constant;
      Constant->setNodeType(CONSTANT);
      Constant->setDecompositionRule(3);
      float_constant* floatConstant;
      floatConstant = new float_constant(strlen(tokval));
      floatConstant->setNodeType(FLOAT_CONST);
      floatConstant->floatValue = yypvt[-0].r;
      strcpy(floatConstant->stringRepresentation, tokval);
      floatConstant->storeIgnored();
      Constant->floatConstant = floatConstant;
      yyval.node = Constant;
    } break;
case 230:{
      constant* Constant;
      Constant = new constant;
      Constant->setNodeType(CONSTANT);
      Constant->setDecompositionRule(4);
      enumeration_constant* enumerationConstant;
      enumerationConstant = new enumeration_constant(strlen(yypvt[-0].s));
      enumerationConstant->setNodeType(ENUMERATION_CONST);
      strcpy(enumerationConstant->stringRepresentation, yypvt[-0].s);
      enumerationConstant->storeIgnored();
      Constant->enumerationConstant = enumerationConstant;
      yyval.node = Constant;
    } break;
case 231:{
      delimiter* Delimiter;
      Delimiter = new delimiter(";");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 232:{
      delimiter* Delimiter;                   
      Delimiter = new delimiter("{");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 233:{
      delimiter* Delimiter;
      Delimiter = new delimiter("}");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 234:{
      delimiter* Delimiter;
      Delimiter = new delimiter(",");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 235:{
      delimiter* Delimiter;
      Delimiter = new delimiter("=");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 236:{
      delimiter* Delimiter;
      Delimiter = new delimiter(":");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 237:{
      delimiter* Delimiter;
      Delimiter = new delimiter("(");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 238:{
      delimiter* Delimiter;
      Delimiter = new delimiter(")");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 239:{
      delimiter* Delimiter;
      Delimiter = new delimiter("[");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 240:{
      delimiter* Delimiter;
      Delimiter = new delimiter("]");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 241:{
      delimiter* Delimiter;
      Delimiter = new delimiter("*");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 242:{
      delimiter* Delimiter;
      Delimiter = new delimiter("...");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 243:{
      delimiter* Delimiter;
      Delimiter = new delimiter("?");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 244:{
      delimiter* Delimiter;
      Delimiter = new delimiter("||");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 245:{
      delimiter* Delimiter;
      Delimiter = new delimiter("&&");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 246:{
      delimiter* Delimiter;
      Delimiter = new delimiter("|");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 247:{
      delimiter* Delimiter;
      Delimiter = new delimiter("^");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 248:{
      delimiter* Delimiter;
      Delimiter = new delimiter("&");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 249:{
      delimiter* Delimiter;
      Delimiter = new delimiter("==");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 250:{
      delimiter* Delimiter;
      Delimiter = new delimiter("!=");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 251:{
      delimiter* Delimiter;
      Delimiter = new delimiter("<");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 252:{
      delimiter* Delimiter;
      Delimiter = new delimiter(">");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 253:{
      delimiter* Delimiter;
      Delimiter = new delimiter("<=");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 254:{
      delimiter* Delimiter;
      Delimiter = new delimiter(">=");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 255:{
      delimiter* Delimiter;
      Delimiter = new delimiter("<<");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 256:{
      delimiter* Delimiter;
      Delimiter = new delimiter(">>");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 257:{
      delimiter* Delimiter;
      Delimiter = new delimiter("+");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 258:{
      delimiter* Delimiter;
      Delimiter = new delimiter("-");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 259:{
      delimiter* Delimiter;
      Delimiter = new delimiter("/");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 260:{
      delimiter* Delimiter;
      Delimiter = new delimiter("%");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 261:{
      delimiter* Delimiter;
      Delimiter = new delimiter("~");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 262:{
      delimiter* Delimiter;
      Delimiter = new delimiter("!");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 263:{
      delimiter* Delimiter;
      Delimiter = new delimiter("->");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 264:{
      delimiter* Delimiter;
      Delimiter = new delimiter("++");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 265:{
      delimiter* Delimiter;
      Delimiter = new delimiter("--");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 266:{
      delimiter* Delimiter;
      Delimiter = new delimiter(".");
      Delimiter -> setNodeType(DELIMITER);
      Delimiter -> storeIgnored();
      yyval.node = Delimiter;
    } break;
case 267:{
      keyword* Keyword;
      Keyword = new keyword("auto");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 268:{
      keyword* Keyword;
      Keyword = new keyword("break");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 269:{
      keyword* Keyword;
      Keyword = new keyword("case");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 270:{
      keyword* Keyword;
      Keyword = new keyword("char");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 271:{
      keyword* Keyword;
      Keyword = new keyword("const");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 272:{
      keyword* Keyword;
      Keyword = new keyword("continue");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 273:{
      keyword* Keyword;
      Keyword = new keyword("default");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 274:{
      keyword* Keyword;
      Keyword = new keyword("do");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 275:{
      keyword* Keyword;
      Keyword = new keyword("double");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 276:{
      keyword* Keyword;
      Keyword = new keyword("else");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 277:{
      keyword* Keyword;
      Keyword = new keyword("enum");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 278:{
      keyword* Keyword;
      Keyword = new keyword("extern");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 279:{
      keyword* Keyword;
      Keyword = new keyword("float");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 280:{
      keyword* Keyword;
      Keyword = new keyword("for");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 281:{
      keyword* Keyword;
      Keyword = new keyword("goto");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 282:{
      keyword* Keyword;
      Keyword = new keyword("if");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 283:{
      keyword* Keyword;
      Keyword = new keyword("int");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 284:{
      keyword* Keyword;
      Keyword = new keyword("long");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 285:{
      keyword* Keyword;
      Keyword = new keyword("register");
      Keyword -> setNodeType(KEYWORD);
      yyval.node = Keyword;
      Keyword -> storeIgnored();
    } break;
case 286:{
      keyword* Keyword;
      Keyword = new keyword("return");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 287:{
      keyword* Keyword;
      Keyword = new keyword("short");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 288:{
      keyword* Keyword;
      Keyword = new keyword("signed");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 289:{
      keyword* Keyword;
      Keyword = new keyword("sizeof");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 290:{
      keyword* Keyword;
      Keyword = new keyword("static");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 291:{
      keyword* Keyword;
      Keyword = new keyword("struct");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 292:{
      keyword* Keyword;
      Keyword = new keyword("switch");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 293:{
      keyword* Keyword;
      Keyword = new keyword("typedef");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 294:{
      keyword* Keyword;
      Keyword = new keyword("void");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 295:{
      keyword* Keyword;
      Keyword = new keyword("volatile");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 296:{
      keyword* Keyword;
      Keyword = new keyword("union");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 297:{
      keyword* Keyword;
      Keyword = new keyword("unsigned");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
case 298:{
      keyword* Keyword;
      Keyword = new keyword("while");
      Keyword -> setNodeType(KEYWORD);
      Keyword -> storeIgnored();
      yyval.node = Keyword;
    } break;
     }
     goto yystack;  /* stack new state and value */
}
